在.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";

但邮件不会发送到信封中指定的收件人。

有什么建议吗?

在.NET中实现邮件列表

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(以及CcBcc属性,请参阅SmtpClient.Send)。手动设置Headers["To"]没有帮助,因为该值被To属性的内容覆盖(请参阅Message.PrepareHeaders)。

因此,list@example.com获取消息的副本。根据SMTP服务器的配置,这可能会导致邮件循环。