2012-05-22 79 views
6

我有一个问题,当通过此代码发送一封邮件时,发生错误“SMTP服务器需要安全连接或客户端未通过身份验证,服务器响应为: 5.5.1身份验证要求“SMTP服务器需要安全连接或客户端未通过身份验证。服务器响应是:5.5.1需要身份验证

,我的代码是:

protected void ImageButton1_Click(object sender, ImageClickEventArgs e) 
{ 

    MailMessage mail = new MailMessage(); 
    mail.To.Add("[email protected]"); 
    mail.From = new MailAddress("[email protected]"); 
    string body = "<table><tr><td>Company Name:</td><td>" + txt_cname.Text + "</td></tr><tr><td>Address With No.:</td><td>" + txt_addwithno.Text + "</td></tr><tr><td>Contact Person:</td><td>" + txt_conperson.Text + "</td></tr><tr><td>Email Id</td><td>" + txt_email.Text + "</td></tr><tr><td>Description</td><td>" + txt_description.Text + "</td></tr></table>"; 
    mail.Body = body; 
    mail.IsBodyHtml = true; 
    SmtpClient smtp = new SmtpClient(); 
    smtp.Host = "smtp.gmail.com"; 
    smtp.Port = 25; 
    smtp.UseDefaultCredentials = true; 
    smtp.Credentials = new System.Net.NetworkCredential("[email protected]", "xyz"); 
    smtp.EnableSsl = true; 
    smtp.Send(mail); 


    txt_cname.Focus(); 
    txt_cname.Text = ""; 
    txt_addwithno.Text = ""; 
    txt_conperson.Text = ""; 
    txt_email.Text = ""; 
    txt_description.Text = ""; 

} 
+0

问题解决了吗?因为我有同样的问题,并试图修复它.. –

+0

你可能想试试这个:http://stackoverflow.com/a/11513412/676508 –

回答

4

我想你应该设置UseDefaultCredentials为false,因为你定义的连接凭据。

将此属性设置为真正当此SmtpClient对象应该,如果服务器请求 ,验证使用当前登录的用户的 的默认凭据。

[...]

如果UseDefaultCredentials属性设置为,则值 集凭据属性将用于连接到服务器的凭据时

2

尝试端口587(它的工作对我来说) 并设置UseDefaultCredentials为false。 设置这一点,并尝试发送邮件

+0

您好缅因useDefaultCredentials虚假但不起作用 –

+0

好吧尝试删除行UseDefaultCredentials或暂时注册它 –

+0

并让我知道 –

0

端口没有按”因为System.Net.Mail不支持隐式SSL,换句话说它完全忽略了“Port”参数。

0

我试图通过SQL Server 2012数据库邮件进行设置,并得到相同的消息。

即使在使用特定于应用程序的密码之后,我仍然无法使用我的主要g-mail帐户使用双重身份验证。我结束了尝试我的辅助帐户,它没有双重身份验证,并立即工作。因此,对于任何使用上述解决方案之一无法正常工作的人,请使用标准身份验证邮件帐户进行尝试。

相关问题