使用SmtpDeliveryMethod.SpecifiedPickupDirectory时,为什么电子邮件中的密件抄送邮件标题不起作用?

时间:2012-09-12 13:14:53

标签: vb.net exchange-server exchange-server-2010 system.net.mail

我们有一个使用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邮件标题相关的任何已知问题未通过以下更新进行处理?

  • Exchange Server 2010更新汇总6(KB2529939)
  • Exchange Server 2010更新汇总3-v3(KB2608646)
  • Microsoft Office 2010 Filter Pack Service Pack 1(SP1)
  • Silverlight更新
  • 和52安全更新,Hot Fixes和Windows更新
    • Hotfix KB2679255
    • 安全更新KB2536276
    • 安全更新KB2560656
    • 安全更新KB2564958
    • 安全更新KB2567680
    • 安全更新KB2570947
    • 安全更新KB2584146
    • 安全更新KB2585542
    • 安全更新KB2604115
    • 安全更新KB2620704
    • 安全更新KB2520712
    • 安全更新KB2521440
    • 安全更新KB2631813
    • 安全更新KB2643719
    • 安全更新KB2644615
    • 安全更新KB2645640
    • 安全更新KB2653956
    • 安全更新KB2654428
    • 安全更新KB2655992
    • 安全更新KB2656356
    • 安全更新KB2656373
    • 安全更新KB2656411
    • 安全更新KB2658846
    • 安全更新KB2659262
    • 安全更新KB2667402
    • 安全更新KB2676562
    • 安全更新KB2685939
    • 安全更新KB2686831
    • 安全更新KB2688338
    • 安全更新KB2690533
    • 安全更新KB2691442
    • 安全更新KB2695962
    • 安全更新KB2698365
    • 安全更新KB2699988
    • 安全更新KB2709715
    • 安全更新KB2718523
    • 安全更新KB2719985
    • 更新KB2545698
    • 更新KB2547666
    • 更新KB2552343
    • 更新KB2563227
    • 更新KB2603229
    • 更新KB2507047
    • 更新KB2608658
    • 更新KB2633952
    • 更新KB2640148
    • 更新KB2660075
    • 更新KB2677070
    • 更新KB2699779
    • 更新KB2709630
    • 更新KB2718704
    • Windows IE 9

或者是否有人知道更简单的方法来检查更新的内容,以及这些更新是否会导致此特定问题?

1 个答案:

答案 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的分拣文件夹时,正确地将电子邮件的盲目副本发送到指定的密件抄送地址