在.NET中实现邮件列表

时间:2012-03-21 22:02:08

标签: c# email smtp smtpclient mailing-list

我正在使用.NET实现邮件列表。正如this answer中所讨论的,我需要发送一封电子邮件,其中信封的收件人与To标头中的收件人不同。如何在C#中实现这一目标? System.Net.Mail中的SmtpClient和MailMessage类似乎不允许这样做。

我试过了:

        message.To.Add("list@example.com");
        message.Headers["Envelope-to"] = "user@example.com";

但是邮件不会被发送到Envelope-to中指定的内容。

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

将地址添加到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服务器的配置,这可能会导致邮件循环。