2012-07-25 10 views
0

當我刪除註釋「//stmp.timeout」時,會發生超時錯誤。我應該怎麼做才能解決這個問題?發送電子郵件時出現異常「無法連接到遠程服務器」

這裏是我的代碼:

public ActionResult Index(EmailModel model) 
{ 
    var smtp = new System.Net.Mail.SmtpClient(); 
    { 
     smtp.Host = "smtp.gmail.com"; 
     smtp.Port = 180; 
     smtp.EnableSsl = true; 
     smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; 
     smtp.Credentials = new NetworkCredential("[email protected] ","somepassword"); 
     //smtp.Timeout = 20000; 
    } 
    try 
    { 
     smtp.Send("[email protected]",model.To, model.Subject, model.Message); 
     return View("Index"); 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine(ex); //Should print stacktrace + details of inner exception 
     if (ex.InnerException != null) 
     { 
      Console.WriteLine("InnerException is: {0}", ex.InnerException); 
     } 
    } 
    return View("Index"); 
+0

您的NetWorkCredentials用戶有空間嗎? – Steve 2012-07-25 21:14:22

+0

@Steve我應該怎麼做的人 – 2012-07-25 21:15:02

+0

後端口到465它給了我例外操作已超時 – 2012-07-25 21:33:50

回答

1

在這一行

smtp.Credentials = new NetworkCredential("[email protected] ","somepassword 

gmail.com後的空間。這可能會阻止登錄到Gmail。去掉它。
此外,我認爲用於向gmail發送郵件的端口爲465(SSL)或587(用於TLS/STARTTLS)。

smtp.Port = 465; 
+0

好收穫! :)我沒有付出那麼多的關注。 – 2012-07-25 21:19:09

+0

將端口設置爲465後,它給我例外操作已超時 – 2012-07-25 21:30:46

+0

本網站有完整的問題/答案。而不是重複的答案,我會給你[這個鏈接](http://stackoverflow.com/questions/32260/sending-email-in-net-through-gmail)。希望能幫助到你。 – Steve 2012-07-25 21:36:06

相關問題