在.NET中实现邮件列表
本文关键字:邮件列表 实现 NET | 更新日期: 2023-09-27 18:28:39
我正在使用.NET实现邮件列表。正如本答案中所讨论的,我需要发送一封电子邮件,其中信封的收件人与to标头中的收件人不同。如何在C#中实现这一点?System.Net.Mail中的SmtpClient和MailMessage类似乎不允许这样做。
我试过了:
message.To.Add("list@example.com");
message.Headers["Envelope-to"] = "user@example.com";
但邮件不会发送到信封中指定的收件人。
有什么建议吗?
向Envelope-To
添加地址而不将其添加到To
您可以使用MailMessage.Bcc属性。添加到那里的地址只会出现在Envelope-To
中,而不会出现在邮件的To
:中
message.Bcc.Add("user@example.com");
向To
添加地址而不将其添加到Envelope-To
给,我敢肯定你运气不好。我已经用ILSpy查看了System.Net.Mail命名空间,看起来这是不可能的。邮件的To
标头是由MailMessage的To
属性创建的(请参阅Message.PrepareHeaders),并且相同的属性用于填充邮件的Envelope-To
(以及Cc
和Bcc
属性,请参阅SmtpClient.Send)。手动设置Headers["To"]
没有帮助,因为该值被To
属性的内容覆盖(请参阅Message.PrepareHeaders)。
因此,list@example.com
将获取消息的副本。根据SMTP服务器的配置,这可能会导致邮件循环。