我正在使用Exchange 2007代答目录通过System.Net.Mail.SmtpClient
从我的ASP.NET应用程序发送电子邮件。因此我正在使用SmtpClient.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory
。它发送电子邮件很好,但后来我注意到BCC根本不工作。放在拾取文件夹中的文件似乎具有正确的设置,但Exchange忽略了X-Receiver列表。以下是正在创建的EML文件的示例:
X-Sender: "Joe" <joe@example.com>
X-Receiver: david@example.com
X-Receiver: contact@example.com
X-Receiver: lindsey@example.com
MIME-Version: 1.0
From: "Joe" <joe@example.com>
To: david@example.com
Date: 10 Mar 2009 9:32:27 -0500
Subject: Test Message
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: quoted-printable
<p>Test Message</p>
联系@和lindsey @是BCC收件人。当我使用网络发送时,它工作正常。 BCC仅停止使用拾取目录。所以你知道,我正在使用Windows Server 2008和ASP.NET 3.5 / C#。
似乎Exchange 2007忽略了X-Receiver并希望看到Bcc:而不是。所以我使用mailMessage.Headers.Add(“Bcc”,bccList),其中bccList是以分号分隔的电子邮件地址列表。这很好。
但正如Chase Seibert指出的那样,如果您查看电子邮件客户端中邮件的标题,您仍然可以看到列出的所有X-Receivers。虽然Bcc被剥离,因此对收件人隐藏起来。因此,你可以获得密件抄送的效果,有人可能会打开邮件并查看所有密件抄送。我认为抑制X-Receivers列表的最佳方法是不在mailMessage.Bcc属性中包含任何内容。
答案 0 :(得分:1)
这绝对适用于Windows 2003 Server,只有操作系统附带的MS SMTP实现。我的理解是Exchange使用相同的服务来发送它。
虽然这可能无法解答您的问题,但我想注意,Pickup方法有一个您可能不知道的缺点。通常,MS SMTP在入站传输期间从EML 中剥离BCC和X-Recipient标头。
当您将EML放入Pickup时,您跳过此步骤。因此,远程收件人实际上可以在查看电子邮件标题时查看BCC收件人。尝试发送电子邮件到Gmail帐户和BCC其他人。如果您在Gmail中查看标题,则会看到BCC收件人。
我建议使用SMTP来传递此邮件。