我们有一个使用System.Net.Mail
电子邮件会被发送到一个文件夹,并且作业会在指定的时间将文件复制到Exchange服务器上的Pickup文件夹中。电子邮件的副本将使用密件抄送字段发送到内部邮箱。
有一个known issue,其中Bcc
属性未添加到使用Exchange的分拣文件夹发送的电子邮件中,因此解决方法是将密件抄送字段直接添加到邮件头中,但是截至2012年7月28日,这已停止工作。
' BCC doesn't work when sent internally using the Pickup folder,
' so need to add to message headers instead
'message.Bcc.Add(New MailAddress("internalMailbox@mydomain.com"))
message.Headers.Add("Bcc", "internalMailbox@mydomain.com")
Dim smtp = New SmtpClient(exchangeServer)
smtp.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory
smtp.PickupDirectoryLocation = temporaryEmailFolder
smtp.Send(message)
Microsoft是否在Exchange中更改了某些内容,因此电子邮件标头中的Bcc地址也不再有效?或者还有另一种解决方法吗?
我尝试切换到System.Web.Mail
,但我无法将邮件传递到文件夹。
我们在Windows Server 2008 R2标准计算机上使用Exchange 2010
修改:
该日期安装了大量更新。我猜他们中的一个导致了这个问题,但是有一个巨大的列表,它的进展缓慢。任何人都知道与Bcc邮件标题相关的任何已知问题未通过以下更新进行处理?
或者是否有人知道更简单的方法来检查更新的内容,以及这些更新是否会导致此特定问题?
答案 0 :(得分:1)
我无法弄清楚哪个更新导致了这个问题,并且没有时间一次卸载它们以便弄明白,所以找到了替代方案。
我注意到使用我当前代码的电子邮件中根本不再添加标题信息,但是将地址添加为密件抄送仍会在邮件标题中创建第二条X-Receiver
行(当Exchange忽略时你把邮件放到了Pickup文件夹中),所以我编写了一个脚本,它只是循环遍历传递文件夹中的电子邮件,而是用X-Receiver
替换第二个Bcc
行。
' This no longer adds Bcc to message header for whatever reason
'message.Headers.Add("Bcc", "bccRecipient@mydomain.com")
message.Bcc.Add(New MailAddress("bccRecipient@mydomain.com"))
...
Dim content As String
Dim regex As Regex = New Regex("(X-Receiver:.*?\n)(X-Receiver:)")
' Replace of the 2nd instance of "X-Receiver:" with "Bcc:"
For Each fileName As String In Directory.GetFiles(EMAIL_DELIVERY_FOLDER)
content = File.ReadAllText(fileName)
content = regex.Replace(content, "$1Bcc:", 1)
File.WriteAllText(fileName, content)
Next
这会更改
中的电子邮件标题X-Sender: "Test"
<sender@mydomain.com>
X-Receiver: receipient@mydomain.com
X-Receiver: bccRecipient@mydomain.com
MIME-Version: 1.0
到
X-Sender: "Test"
<sender@mydomain.com>
X-Receiver: receipient@mydomain.com
Bcc: bccRecipient@mydomain.com
MIME-Version: 1.0
当.eml邮件被放入Exchange的分拣文件夹时,正确地将电子邮件的盲目副本发送到指定的密件抄送地址