我正在使用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>
contact@和lindsey@是BCC收件人。当我使用网络发送时,一切正常。只有在使用取件目录时,BCC才停止工作。因此,您知道,我正在使用Windows Server 2008和ASP.NET 3.5 / C#。
Workaround
似乎Exchange 2007忽略了X-Receiver并期望看到Bcc:。因此,我已经采取了mailMessage.Headers.Add("Bcc", bccList)的方式,其中bccList是一个分号分隔的电子邮件地址列表。那很好用。
但正如Chase Seibert所指出的那样,如果您查看电子邮件客户端中消息的标头,仍然可以看到所有列出的X-接收器。尽管Bcc被剥离并因此隐藏了接收者。因此,您可以获得Bcc的效果,并有可能有人打开消息并查看所有Bcc。我认为压制X-Receivers列表的最佳方法是不在mailMessage.Bcc属性中包含任何内容。