C# SMTP服务器需要安全连接,或者客户端未通过身份验证。服务器响应为:需要5.5.1身份验证

C# SMTP服务器需要安全连接,或者客户端未通过身份验证。服务器响应为:需要5.5.1身份验证,c#,C#,我有一个问题,当我通过此代码发送邮件时,出现错误“SMTP服务器需要安全连接或客户端未通过身份验证。服务器响应为:需要5.5.1身份验证。” 我的代码是: protected void ImageButton1_Click(object sender, ImageClickEventArgs e) { MailMessage mail = new MailMessage(); mail.To.Add("info@msslindia.com"); mail.From =

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

我的代码是:

protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{

    MailMessage mail = new MailMessage();
    mail.To.Add("info@msslindia.com");
    mail.From = new MailAddress("info@msslindia.com");
    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("info@msslindia.com", "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 = "";

}
protectedvoid ImageButton1\u单击(对象发送者,ImageClickEventArgs e)
{
MailMessage mail=新的MailMessage();
mail.To.Add(“info@msslindia.com");
mail.From=新邮件地址(“info@msslindia.com");
string body=“公司名称:”+txt_cname.Text+“地址,编号:”+txt_addwithno.Text+“联系人:”+txt_conperson.Text+“电子邮件Id”+txt_Email.Text+“说明”+txt_Description.Text+”;
mail.Body=Body;
mail.IsBodyHtml=true;
SmtpClient smtp=新SmtpClient();
smtp.Host=“smtp.gmail.com”;
smtp.Port=25;
smtp.UseDefaultCredentials=true;
smtp.Credentials=新系统.Net.NetworkCredential(“info@msslindia.com“,“xyz”);
smtp.EnableSsl=true;
smtp.发送(邮件);
txt_cname.Focus();
txt_cname.Text=“”;
txt_addwithno.Text=”“;
txt_conperson.Text=“”;
txt_email.Text=“”;
txt_description.Text=“”;
}
我认为您应该设置为false,因为您定义了连接的凭据

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

[……]

如果UseDefaultCredentials属性设置为false,则该值 在以下情况下,凭据属性中的设置将用于凭据: 连接到服务器


我想你用错端口了

你应该用465

干杯

试试587端口(它对我有用) 并将UseDefaultCredentials设置为false。
设置此选项并尝试发送邮件

谷歌可能会阻止应用程序访问您的帐户
在这里,您可以使应用程序使用您的凭据访问google帐户:


端口实际上并不重要,因为System.Net.Mail不支持隐式SSL,换句话说,它完全忽略“port”参数。

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


使用我的主要g-mail帐户(使用双重身份验证),即使使用了特定于应用程序的密码,我也无法让它正常工作。我最后尝试了我的第二个帐户,它没有双重身份验证,它立即起作用。因此,对于无法使用上述解决方案之一使其工作的任何人,请使用标准的auth g-mail帐户进行尝试。

Microsoft声明不建议使用SmtpClient。你应该使用MailKit,它肯定会有用的


我们不建议您在新开发中使用SmtpClient类,因为SmtpClient不支持许多现代协议。改用MailKit或其他库。有关更多信息,请参阅SmtpClient不应在GitHub上使用。

确定删除UseDefaultCredentials行后重试,或者暂时启动它。您可以将您的代码片段发送给我,以便我查看它们吗?我尝试了您粘贴在此处的代码,它工作得非常好。您试图从哪个帐户发送邮件?实际上它是在outlook上配置的。让我们看看这个问题解决了吗?因为我有同样的问题,并试图解决它..你可能想试试这个:是的,你是对的,25是通用的smtp端口。您可能需要使用465或587