1

我正在使用 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 属性中包含任何内容。

4

1 回答 1

1

这在 Windows 2003 Server 中绝对有效,只有操作系统附带的 MS SMTP 实现。我的理解是 Exchange 使用相同的服务进行发送。

虽然这可能无法回答您的问题,但我想指出 Pickup 方法有一个您可能不知道的缺点。通常,MS SMTP在入站传输期间从 EML 中去除 BCC 和 X-Recipient 标头。

当您将 EML 放入 Pickup 时,您将跳过此步骤。因此,如果远程收件人查看电子邮件标题,他们实际上将能够看到密件抄送收件人。尝试向 gmail 帐户发送电子邮件并密件抄送其他人。如果您在 Gmail 中查看标头,您将看到密件抄送收件人。

我建议改用 SMTP 来传递此消息。

于 2009-03-11T01:45:34.327 回答