4

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

我试过:

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

但是邮件没有被发送到信封中指定的地址。

有什么建议么?

4

1 回答 1

3

添加地址Envelope-To而不添加地址To

您可以使用MailMessage.Bcc属性。添加的地址只会出现在邮件中Envelope-To,而不是邮件中To

message.Bcc.Add("user@example.com");

添加地址To而不添加地址Envelope-To

在这里,我很确定你不走运。我用 ILSpy 查看了 System.Net.Mail 命名空间,看起来这是不可能的。To邮件的标头是To根据 MailMessage 的属性创建的(请参阅 Message.PrepareHeaders),并且使用相同的属性来填充Envelope-To邮件(连同CcBcc属性,请参阅 SmtpClient.Send)。手动设置Headers["To"]无济于事,因为该值会被To属性的内容覆盖(请参阅 Message.PrepareHeaders)。

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

于 2012-03-21T22:07:20.660 回答