2017-02-13 164 views
0

我正在使用Web項目。我想創建「忘記我的密碼」系統,並在需要時向用戶發送郵件,但是當我嘗試這樣做時,它會給出錯誤,如SmtpException:發送消息失敗,SocketException:由於連接的主機失敗,未正確響應或連接失敗以迴應並且無法發送郵件。我嘗試了2525,25和587端口。我也查了,如果我可以通過mxtoolbox連線smtp.gmail.com:無法通過使用C#使用smtp從本地主機發送郵件

這是SMTP電子郵件服務器測試

SMTP Email Server Test

這是SMTP DNS測試

SMTP DNS Test

這裏是我的代碼:

protected void lblForPass_Click(object sender, EventArgs e) 
{ 
    SmtpClient client = new SmtpClient(); 
    client.DeliveryMethod = SmtpDeliveryMethod.Network; 
    client.EnableSsl = true; 
    client.Host = "smtp.gmail.com"; 
    client.UseDefaultCredentials = false; 
    client.Port = 25; 
    client.Timeout = 300000; 
    System.Net.NetworkCredential credentials = new System.Net.NetworkCredential("[email protected]", "1122334455"); 
    client.Credentials = credentials; 

    MailMessage msg = new MailMessage(); 
    msg.From = new MailAddress("[email protected]"); 
    msg.To.Add(new MailAddress("[email protected]")); 

    msg.Subject = "Subject Test"; 
    msg.IsBodyHtml = true; 
    msg.Body = string.Format("<html><head></head><body><b>Body Test</b></body>"); 


     try 
     { 
      client.Send(msg); 
      ScriptManager.RegisterClientScriptBlock(this, GetType(), "Mail Status", "alert('Sended Successfuly')", true); 
     } 

     catch(Exception ex) 
     { 
      Exception ex2 = ex; 
      string errorMessage = string.Empty; 
      while (ex2 != null) 
      { 
       errorMessage += ex2.ToString(); 
       ex2 = ex2.InnerException; 

      } 
      string err = ex.Message; 
      ScriptManager.RegisterClientScriptBlock(this, GetType(), "Mail Error", "alert('" +err+"')", true); 
     } 


    } 

有沒有什麼,我錯過了這個代碼塊或我需要檢查什麼?謝謝。

回答

0

我想你可以嘗試: 1)儘量端口更改爲587 2)檢查您的帳戶設置(https://www.google.com/settings/security/lesssecureapps

對於我的web項目中,我使用每月http://www.mailgun.com/免費10000個電子郵件。它很容易連接到任何域名,登錄等

+0

已經嘗試過端口587.更改我的帳戶設置爲「打開」,並嘗試,但它也沒有幫助。它可以關於我的防火牆嗎? – ReadyFreddy

+0

是的。在我看來,使用第三方服務是一個很好的解決方案。 –

相關問題