服务器响应为:5.7.0必须首先发出STARTTLS命令.i16sm1806350pag.18 - gsmtp

Ank*_*pta 39 c# asp.net iis

我尝试使用gmail发送邮件,我得到一个例外 The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.0 Must issue a STARTTLS command first. i16sm1806350pag.18 - gsmtp

我写的用于发送邮件的代码是

MailMessage mail = new MailMessage(); 
mail.To.Add(txtEmail.Text.Trim()); 
mail.To.Add("Secondry@gmail.com");
mail.From = new MailAddress("mysendingmail@gmail.com");
mail.Subject = "Confirmation of Registration on Job Junction.";
string Body = "Hi, this mail is to test sending mail using Gmail in ASP.NET";
mail.Body = Body;
mail.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
// smtp.Host = "smtp.gmail.com"; //Or Your SMTP Server Address
smtp.Credentials = new System.Net.NetworkCredential("mysendingmail@gmail.com", "password");
// smtp.Port = 587;
//Or your Smtp Email ID and Password
smtp.UseDefaultCredentials = false;
// smtp.EnableSsl = true;
smtp.Send(mail);
Run Code Online (Sandbox Code Playgroud)

请告诉我解决方案我没有得到任何解决方案.

Mic*_* DN 36

Gmail要求您使用安全连接.这可以在你的web.config中设置如下:

<network host="smtp.gmail.com" enableSsl="true" ... />
Run Code Online (Sandbox Code Playgroud)

要么

SSL也应该在Web服务器上启用.请参阅以下链接

在IIS 7.0上启用SSL


小智 27

步骤1): smtp.EnableSsl = true;

如果还不够:

步骤(2):必须为使用Google设置页面使用的Gmail帐户启用" 访问安全性较低的应用 " :NetworkCredential


小智 8

https://www.google.com/settings/security/lesssecureapps ” 登录您的gmail帐户后使用此链接并单击打开。然后运行您的应用程序,它肯定会工作。


Dav*_*idG 7

这个问题也在一夜之间困扰着我.以下是修复方法:

  • 设置主机为:smtp.gmail.com
  • 将端口设置为:587

这是TLS端口.我一直在使用所有其他SMTP端口但没有成功.如果你这样设置enableSsl = true:

Dim SMTP As New SmtpClient(HOST)
SMTP.EnableSsl = True
Run Code Online (Sandbox Code Playgroud)

修剪用户名和密码字段(如果用户在注册时像我一样输入电子邮件和密码,这是防止错误的好方法),如下所示:

SMTP.Credentials = New System.Net.NetworkCredential(EmailFrom.Trim(), EmailFromPassword.Trim())
Run Code Online (Sandbox Code Playgroud)

使用TLS端口会将您的SMTP视为SMTPS,允许您进行身份验证.我立即收到谷歌的警告说我的电子邮件阻止了一个存在安全风险或过时的应用.我继续"打开不太安全的应用程序".然后我更新了有关我的电话号码的信息,谷歌通过短信向我发送了验证码.我进去了,瞧!

我再次运行应用程序并且成功了.我知道这个帖子已经过时了,但是我在网上搜索了它抛出的所有例外情况,并在每一行之后添加了MsgBoxes以查看出现了什么问题.这是我的工作代码为了可读性而修改,因为我的所有变量都来自MySQL数据库:

Try
    Dim MySubject As String = "Email Subject Line"
    Dim MyMessageBody As String = "This is the email body."
    Dim RecipientEmail As String = "recipient@gmail.com"
    Dim SenderEmail As String = "sender@gmail.com"
    Dim SenderDisplayName As String = "FirstName LastName"
    Dim SenderEmailPassword As String = "SenderPassword4Gmail"

    Dim HOST = "smtp.gmail.com"
    Dim PORT = "587" 'TLS Port

    Dim mail As New MailMessage
    mail.Subject = MySubject
    mail.Body = MyMessageBody
    mail.To.Add(RecipientEmail) 
    mail.From = New MailAddress(SenderEmail, SenderDisplayName)

    Dim SMTP As New SmtpClient(HOST)
    SMTP.EnableSsl = True
    SMTP.Credentials = New System.Net.NetworkCredential(SenderEmail.Trim(), SenderEmailPassword.Trim())
    SMTP.DeliveryMethod = SmtpDeliveryMethod.Network 
    SMTP.Port = PORT
    SMTP.Send(mail)
    MsgBox("Sent Message To : " & RecipientEmail, MsgBoxStyle.Information, "Sent!")
Catch ex As Exception
    MsgBox(ex.ToString)
End Try
Run Code Online (Sandbox Code Playgroud)

我希望这段代码有助于OP,但也有像我这样的人迟到了.请享用.


小智 5

发送按钮逻辑:

string fromaddr = "YOURMAILID@gmail.com";
string toaddr = TextBox1.Text;//TO ADDRESS HERE
string password = "YOUR PASSWROD";

MailMessage msg = new MailMessage();
msg.Subject = "Username &password";
msg.From = new MailAddress(fromaddr);
msg.Body = "Message BODY";
msg.To.Add(new MailAddress(TextBox1.Text));
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
smtp.UseDefaultCredentials = false;
smtp.EnableSsl = true;
NetworkCredential nc = new NetworkCredential(fromaddr,password);
smtp.Credentials = nc;
smtp.Send(msg);
Run Code Online (Sandbox Code Playgroud)

此代码工作100%。如果您的系统或防火墙中装有防病毒软件,从而限制了从系统发送邮件的速度,请禁用防病毒软件和防火墙。运行此代码后,...在以上代码中,代码TextBox1.Text控件用于TOaddress