2
在2010年(我們當時仍在使用Net 2.0)時,我們遇到了一個問題,即將SmtpDeliveryMethod.SpecifiedPickupDirectory與SmtpClient一起使用時,郵件未發送給密件抄送收件人。SmtpClient:使用SmtpDeliveryMethod.SpecifiedPickupDirectory時忽略Bcc
if (message.Bcc.Count > 0)
{
System.Text.StringBuilder bcc = new System.Text.StringBuilder();
for (int i = 0; i < message.Bcc.Count; i++)
{
bcc.Append(message.Bcc[i].Address);
bcc.Append(";");
}
message.Headers.Add("Bcc", bcc.ToString());
message.Bcc.Clear();
}
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();
smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.SpecifiedPickupDirectory;
smtp.PickupDirectoryLocation = PickupDir;
smtp.Send(message);
此解決方案具有的副作用,即密件抄送收件人發送郵件的標題是可見的,但在我們的情況這不是一個問題,因爲密件抄送用於記錄目的。
幾天前,我們切換到Net 4.0(最後),問題再次出現。我試圖刪除解決方法,這也沒有幫助。
切換到SmtpDeliveryMethod.Network不是一個解決方案,因爲發送方法阻止並保持用戶等待(取決於郵件服務器負載),而發送郵件不是一個選項。發送郵件異步不是一個選項,因爲發送失敗或進程崩潰時郵件丟失。
我似乎無法找到任何解決方案在網絡上的這個問題,所以有沒有人有任何想法?
如果不支持此組合(Bcc + PickupDirectory),應在SmtpClient和/或MailMessage的幫助頁面中提及。 – Marc