我正在编写一个服务器,它将代表我的客户向许多收件人发送电子邮件。
电子邮件必须来自客户的电子邮件地址 (client@example.org),但我想通过 VERP 自动处理退回邮件。 基本上,电子邮件From:
标头将被 client@example.org,但SMTP信封发件人(MAIL FROM
)将是唯一的电子邮件ID@my-email-service.example.com。
我已经构建了一个多线程发送引擎,它使用内置System.Net.Mail.SmtpClient
与收件人的 MX 服务器实际说出 SMTP。
不幸的是,SmtpClient
不允许您指定信封发件人——它只使用From:
地址。
需要一个允许我指定SMTP MAIL FROM
的替代方案。 最好是一些几乎不需要工作就可以插入并替换SmtpClient
的东西。
到目前为止,我所看到的一切都是一个完整的电子邮件套件(SMTP/POP3/IMAP/厨房水槽)。 有哪些轻量级 SMTP 库可用?
System.Net.Mail.SmtpClient
内部使用mailMessage.Sender ?? mailMessage.From
作为信封MAIL FROM
信封发件人。
遗憾的是,虽然您可以使用 Sender 属性通过 mailMessage.Sender
属性指定信封MAIL FROM
信封发件人,但 SmtpClient 还将添加一个Sender: unique-email-id@domain.com
标头。
使用此发件人标头,电子邮件客户端将显示来自unique-email-id@domain.com on behalf of John Doe <doe@domain.com>
的发送
我发现没有像样的开源 Smtp 库支持这一点——即使是 Mono 的 SmtpClient 也缺乏此功能。一些支持 VERP 的库:
- MailKit/MimeKit http://www.mimekit.net/
- Afterlogic MailBee
- 利米拉布斯邮件.dll
- 电子邮件架构师 EASendMail
PS:随意投票支持VERP功能请求:http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/3800792-smtpclient-should-allow-to-specify-the-envelope-se
相关问题:如何在 .NET 中实现 VRP(可变信封返回路径)?