C# 使用asp.net发送电子邮件会显示此错误:SMTP服务器需要安全连接,或者客户端未通过身份验证

C# 使用asp.net发送电子邮件会显示此错误:SMTP服务器需要安全连接,或者客户端未通过身份验证,c#,asp.net,email,C#,Asp.net,Email,我尝试使用以下代码发送电子邮件: public void Semail(string subject, string messageBody, string toAddress) { MailMessage mail = new MailMessage(); mail.To.Add(toAddress); //mail.To.Add("amit_jain_online@yahoo.com");

我尝试使用以下代码发送电子邮件:

  public void Semail(string subject, string messageBody, string toAddress)
        {
            MailMessage mail = new MailMessage();
            mail.To.Add(toAddress);
            //mail.To.Add("amit_jain_online@yahoo.com");
            mail.From = new MailAddress("noreplykaramaoozi@eesharif.edu");
            mail.Subject = subject;
            string Body = messageBody;
            mail.Body = Body;
            mail.IsBodyHtml = true;
            SmtpClient smtp = new SmtpClient();
            smtp.Host = "sina.sharif.ir"; //Or Your SMTP Server Address
            smtp.Port = 587;
            smtp.Credentials = new System.Net.NetworkCredential
                ("noreplykaramaoozi@eesharif.edu", "*******");
            //Or your Smtp Email ID and Password
            smtp.EnableSsl = false;
            smtp.Send(mail);
        }
但在执行之后,我得到了这个错误:

 The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.0 Authentication required 
堆栈跟踪:

[SmtpException: The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.0 Authentication required]
   System.Net.Mail.MailCommand.CheckResponse(SmtpStatusCode statusCode, String response) +2162008
   System.Net.Mail.MailCommand.Send(SmtpConnection conn, Byte[] command, String from) +287
   System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection recipients, String deliveryNotify, SmtpFailedRecipientException& exception) +137
   System.Net.Mail.SmtpClient.Send(MailMessage message) +2188821
   Novitiate.fa.Register.btnLogin_Click(Object sender, EventArgs e) +2948
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +154
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3707

致以最诚挚的问候

如果这有帮助,请尝试以下方法:

MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
mail.From = new MailAddress(Username);
mail.To.Add(TxtEmail.Text);
mail.Subject = Subject;
mail.Body = Body;
SmtpServer.Port = 587;
SmtpServer.Credentials = new System.Net.NetworkCredential(Username, Password);
SmtpServer.EnableSsl = true;
SmtpServer.Timeout = 20000;
SmtpServer.Send(mail);

您的gmail安全设置阻止邮件访问gmail帐户。因此,如果你想发送消息,你必须“关闭”对不太安全的应用程序的访问。当你这么做的时候,你可以很容易地发送信息,但是,冒着gmail安全的风险。所以,这完全取决于你

下面给出了更改安全性的链接


登录到您的电子邮件帐户后,考虑@Krunal Patil的答案,并对发送的验证邮件采取行动,以授予对您的C#应用程序的访问权。

可能
smtp.EnableSsl=true?我将其更改为true,但出现了以下错误:服务器无法支持安全连接!!!服务器在587上有一个开放的端口?你不是在需要身份验证的代理后面吗?一个简单的邮件服务器(outlook或thunderbird)可以连接吗?你知道我们是一家为一所大学设计系统的公司,我们要求他们向我们提供有关其邮件服务器的信息,这给了我们一个用户名和密码、smtp服务器和一个端口,我对此一无所知!!!我使用
telnet
在端口587上尝试了您的SMTP,它正在工作并响应,这意味着SMTP服务器正常。您的凭据可能无效。您可以尝试使用
telnet
,查看此链接有什么不同?不同之处在于SmtpServer.EnableSsl=true;它为您提供了一个安全的连接,您会因此收到错误信息。