我嘗試使用端口465,主機「smtp.gmail.com」發送電子郵件在我的Asp.Net C#應用程序,但整個應用程序掛起(保持加載)掛起。調試時,它停留在SmtpClient.Send(msg)。SmtpClient沒有拋出異常,如果錯誤的端口指定
不管指定的憑證,它不拋出任何異常趕上或任何超時錯誤。我必須關閉或刷新頁面才能重新訪問該頁面。
如果我把端口587,而不是那麼每一件事情正常工作和SmtpClient.Send響應,發送電子郵件或返回一個適當的異常,如操作超時或失敗的基礎上,憑據發送電子郵件。
我簡化下面的示範的代碼:
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 465,
EnableSsl = true,
Timeout = 200, // or any value it doesn't solve the problem
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential("[email protected]", "password")
};
var msg = new MailMessage("[email protected]", "[email protected]", "Any subject", "Any body");
smtp.Send(msg); // stuck here
smtp.Dispose(); // never reached
msg.Dispose();
我試圖SendAsync和減少超時間隔但這並沒有解決問題。我認爲問題在於已達到smtp.gmail.com,但未正確響應端口465,這就是爲什麼該方法卡住了。
我要避免這種行爲,因爲我的應用程序允許的SMTP服務器信息動態設置,我不希望整個應用程序中的錯誤信息的情況下掛了輸入。
謝謝
奇怪,我從來沒有遇到過問題,它看起來不錯。聽起來有點像這個問題http://social.msdn.microsoft.com/Forums/en-US/ncl/thread/99d6812c-9efe-4d0c-94d0-493c688450f7/,但我不認爲他真的有一個解決方案。您可以使用任何其他應用程序向您的網絡發送出站郵件嗎? – devshorts 2013-03-20 21:44:14
'使用(var smtp = ...)'和'使用(var msg = ...)' – 2013-03-20 21:49:33
@devshorts我只使用Wireshark捕獲TCP流量,這足夠嗎? – 2013-03-21 08:54:49