2017-02-13 92 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

是的。在我看来,使用第三方服务是一个很好的解决方案。 –

相关问题