2011-10-18 145 views
4

我仍然收到“发送邮件失败”。例外。内部例外是“无法连接到远程服务器”,内部例外是“连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接的主机未能响应而建立连接失败”。我敢肯定,这不是防火墙设置的原因。有人知道我能做些什么吗?谢谢。通过Google SMTP发送邮件失败

var mail = new MailMessage("[email protected]", "[email protected]") 
         { 
          Subject = "Testing subject", 
          Body = "Testing body" 
         }; 
      try 
      { 
       var client = new SmtpClient("smtp.google.com", 465) 
           { 
            EnableSsl = true, 
            Credentials = new NetworkCredential("[email protected]", "password") 
           }; 
       client.Send(mail); 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine(ex.Message); 
      } 

回答

6

这里是谷歌设置需要:

  • 接收邮件(POP3)服务器 - 需要SSL:pop.gmail.com

    使用SSL:是

    端口:995

    发送邮件(SMTP)服务器 - 需要TLS3或SSL:smtp.gmail.com (使用验证)

    使用身份验证:是的

    端口为TLS/STARTTLS:587

    SSL的端口:465

    帐户名称:您的完整电子邮件地址(包括@ gmail.com或 @ your_domain.com )

    邮箱地址:您的电子邮件地址([email protected][email protected]_domain.com)

    密码:您的Gmail密码

+0

是的,它应该是587端口。现在工作正常。谢谢。 – jonakrob

0

如果主机名是正确的,谷歌支持SMTP通过SSL,那么它被东西堵住,我会开始检查防火墙。

0

我不认为smtp.google.com是正确的gmail服务器。你有没有尝试在端口25 smtp.gmail.com?

端口465适用于通过SSL的SMTP,.NET SmtpClient不支持该端口。而是使用端口25. SMTP客户端将使用STARTTLS功能来加密通信。

3

我不认为465是正确的端口。你尝试过587吗?而SMTP服务器是smtp.gmail.com

+0

是的,它应该是587端口。它现在工作正常。谢谢。 – jonakrob

0

正确的端口是587 smtpclient类

+0

不适用于所有人! – Nitesh

1

我也Godaddy的电子邮件服务器和下面的代码工作的工作对我罚款:

命名空间

System.Net.Mail 

============

string senderID = "[email protected]"; 
string senderPassword = "123456"; 
string body = " Test email "; 

MailMessage mail = new MailMessage(); 
mail.To.Add(username); 
//mail.CC.Add(_cc); 
mail.From = new MailAddress(senderID); 
mail.Priority = MailPriority.High; 
mail.Subject = "Test Email"; 
mail.Body = body; 
mail.IsBodyHtml = true; 
SmtpClient smtp = new SmtpClient(); 
smtp.Host = "relay-hosting.secureserver.net"; //Or Your SMTP Server Address 
smtp.Credentials = new System.Net.NetworkCredential 
    (senderID, senderPassword); // ***use valid credentials*** 
smtp.Port = 25; 
smtp.EnableSsl = false; 
smtp.Send(mail);