2013-06-21 69 views
2

在2010年(我們當時仍在使用Net 2.0)時,我們遇到了一個問題,即將SmtpDeliveryMethod.SpecifiedPickupDirectory與SmtpClient一起使用時,郵件未發送給密件抄送收件人。SmtpClient:使用SmtpDeliveryMethod.SpecifiedPickupDirectory時忽略Bcc

搜索網站(linklink)後,我提出了以下解決方法:

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不是一個解決方案,因爲發送方法阻止並保持用戶等待(取決於郵件服務器負載),而發送郵件不是一個選項。發送郵件異步不是一個選項,因爲發送失敗或進程崩潰時郵件丟失。

我似乎無法找到任何解決方案在網絡上的這個問題,所以有沒有人有任何想法?

回答

1

這在.Net 4.0中不起作用。但它不是它設計的Bug。看看這個link

因爲它似乎有一個.net 3.5中的錯誤,允許執行你正在尋找的行爲。

+0

如果不支持此組合(Bcc + PickupDirectory),應在SmtpClient和/或MailMessage的幫助頁面中提及。 – Marc