我正在使用 Exchange 2007 拾取目录从我的 ASP.NET 应用程序发送电子邮件System.Net.Mail.SmtpClient
。因此我正在使用SmtpClient.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory
. 它可以正常发送电子邮件,但后来我注意到密件抄送根本不起作用。放置在拾取文件夹中的文件似乎具有正确的设置,但 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>
contact@ 和 lindsey@ 是密件抄送收件人。当我使用网络发送时,它工作正常。BCC 仅停止使用拾取目录。所以你知道,我使用的是 Windows Server 2008 和 ASP.NET 3.5 / C#。
解决方法
Exchange 2007 似乎忽略了 X-Receiver,而是希望看到 Bcc:。所以我求助于 mailMessage.Headers.Add("Bcc", bccList) 其中 bccList 是电子邮件地址的分号分隔列表。这很好用。
但是正如 Chase Seibert 指出的那样,如果您在电子邮件客户端中查看消息的标题,您仍然可以看到列出的所有 X-Receiver。尽管密件抄送已被剥离,因此对收件人隐藏。因此,您获得了密件抄送的效果,可能有人会打开邮件并查看所有密件抄送。我认为抑制 X-Receivers 列表的最佳方法是不在 mailMessage.Bcc 属性中包含任何内容。