2014-09-05 74 views
0

此问题已被要求&我已经尝试过每个&我在堆栈溢出中发现的每件事我正在将我的头撞到墙上而不是确定我在哪里犯错,无论如何这里是我的代码。SMTP服务器需要安全连接或客户端未通过身份验证 - 连接超时

using (MailMessage mm = new MailMessage("[email protected]", txtEmail.Text)) 
{ 
    mm.Subject = "Account Activation"; 
    string body = "Hello " + txtUsername.Text.Trim() + ","; 
    body += "<br /><br />Please click the following link to activate your account"; 
    body += "<br /><a href = '" + Request.Url.AbsoluteUri.Replace("CS.aspx", "CS_Activation.aspx?ActivationCode=" + activationCode) + "'>Click here to activate your account.</a>"; 
    body += "<br /><br />Thanks"; 
    mm.Body = body; 
    mm.IsBodyHtml = true; 
    SmtpClient smtp = new SmtpClient(); 
    smtp.Host = "smtp.gmail.com"; 
    smtp.Port = 587; 
    smtp.EnableSsl = true; 
    smtp.UseDefaultCredentials = false; 
    NetworkCredential NetworkCred = new NetworkCredential("[email protected]", "password"); 
    smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; 
    smtp.Credentials = NetworkCred; 
    smtp.Send(mm); 
} 

我试着将默认凭据更改为false,我注意到的是当我更改端口号。从587到465我正在连接超时。

+0

可能重复的[SMTP服务器需要安全连接或客户端未经过身份验证。服务器响应是:5.5.1需要身份验证](http://stackoverflow.com/questions/25660145/the-smtp-server-requires-a-secure-connection-or-the-client-was-not-authenticated) – 2014-09-05 14:58:58

回答

0

我想你可能会过度复杂化它。您不应该需要使用NetworkCredential。它应该是这样的:

using (MailMessage mm = new MailMessage("[email protected]", txtEmail.Text)) 
{ 
    mm.Subject = "Account Activation"; 
    string body = "Hello " + txtUsername.Text.Trim() + ","; 
    body += "<br /><br />Please click the following link to activate your account"; 
    body += "<br /><a href = '" + Request.Url.AbsoluteUri.Replace("CS.aspx", "CS_Activation.aspx?ActivationCode=" + activationCode) + "'>Click here to activate your account.</a>"; 
    body += "<br /><br />Thanks"; 
    mm.Body = body; 
    mm.IsBodyHtml = true; 
    SmtpClient smtp = new SmtpClient(); 
    smtp.Host = "smtp.gmail.com"; 
    smtp.Port = 465; 
    smtp.ConnectType = SmtpConnectType.ConnectSSLAuto; 
    smtp.User = "[email protected]"; 
    smtp.Password = "yourpassword"; 
    smtp.Send(mm); 
} 
相关问题