Skip to main content
 首页 » 编程设计

c#之使用自定义信封发件人 (VERP) 发送电子邮件

2024年01月02日39cyq1162

我正在编写一个服务器,它将代表我的客户向许多收件人发送电子邮件。

电子邮件必须来自客户的电子邮件地址 (client@example.org),但我想通过 VERP 自动处理退回邮件.基本上,电子邮件 From: header 将为 client@example.org,但 SMTP 信封发件人 (MAIL FROM) 将为 unique-email-id@my-email-service.example.com.

我已经构建了一个多线程发送引擎,它使用内置的 System.Net.Mail.SmtpClient 与收件人的 MX 服务器实际对话 SMTP。

不幸的是,SmtpClient 不允许您指定信封发件人 - 它只使用 From: 地址。

我需要一个允许我指定 SMTP MAIL FROM 的替代方法。最好是一些不费吹灰之力就可以插入并替换 SmtpClient 的东西。

到目前为止,我看到的一切都是一个完整的 email suite (SMTP/POP3/IMAP/厨房水槽)。有哪些轻量级 SMTP 库可用?

请您参考如下方法:

System.Net.Mail.SmtpClient内部正在使用 mailMessage.Sender ?? mailMessage.From用于信封 MAIL FROM信封发件人。

不幸的是,虽然您可以使用 Sender 属性来指定信封 MAIL FROM使用 mailMessage.Sender 的信封发件人属性,SmtpClient 还将添加一个 Sender: unique-email-id@domain.com标题。

使用此发件人 header ,电子邮件客户端随后显示来自 unique-email-id@domain.com on behalf of John Doe <doe@domain.com> 的发送

我发现没有像样的开源 Smtp 库支持这个——甚至 Mono 的 SmtpClient 也缺少这个功能。一些支持 VERP 的库:

PS:随时为 VERP 功能请求投票:http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/3800792-smtpclient-should-allow-to-specify-the-envelope-se

相关问题:How can I implement VERP (Variable envelope return path) in .NET?