Ответ сервера: 5.7.0. Сначала необходимо выполнить команду STARTTLS. i16sm1806350pag.18 - gsmtp
Я пытаюсь отправить почту, используя 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
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("[email protected]");
mail.From = new MailAddress("[email protected]");
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("[email protected]", "password");
// smtp.Port = 587;
//Or your Smtp Email ID and Password
smtp.UseDefaultCredentials = false;
// smtp.EnableSsl = true;
smtp.Send(mail);
Пожалуйста, сообщите мне решения, я не получаю никаких решений для этого исключения.
Ответы
Ответ 1
Gmail требует, чтобы вы использовали безопасное соединение. Это можно установить в вашем web.config следующим образом:
<network host="smtp.gmail.com" enableSsl="true" ... />
ИЛИ
SSL также должен быть включен на веб-сервере.
См. Следующую ссылку
Включение SSL в IIS 7.0
Ответ 2
Шаг (1): smtp.EnableSsl = true;
если этого недостаточно:
Шаг (2): "Доступ для менее безопасных приложений" должен быть включен для учетной записи Gmail, используемой NetworkCredential
, с помощью страница настроек Google:
Ответ 3
Этот вопрос также преследовал меня в одночасье. Вот как это исправить:
- Установить узел: smtp.gmail.com
- Установить порт на: 587
Это порт TLS. Я использовал все другие SMTP-порты без успеха. Если вы установите enableSsl = true
следующим образом:
Dim SMTP As New SmtpClient(HOST)
SMTP.EnableSsl = True
Поверните поля имени пользователя и пароля (хороший способ предотвратить ошибки, если пользователь вводит адрес электронной почты и пароль при регистрации, как мой):
SMTP.Credentials = New System.Net.NetworkCredential(EmailFrom.Trim(), EmailFromPassword.Trim())
Использование TLS-порта будет обрабатывать ваш SMTP как SMTPS, позволяющий выполнять аутентификацию. Я сразу получил предупреждение от Google, заявив, что мое письмо блокирует приложение, которое имеет угрозы безопасности или устарело. Я перешел к разделу "Включить менее безопасные приложения". Затем я обновил информацию о моем номере телефона, и Google отправил мне код подтверждения через текст. Я вошел в него и вуаля!
Я снова запустил приложение, и оно прошло успешно. Я знаю, что эта ветка устарела, но я чистил сеть, читая все исключения, которые она бросала, и добавляя MsgBoxes после каждой строки, чтобы понять, что пошло не так. Здесь мой рабочий код изменен для удобочитаемости, поскольку все мои переменные поступают из базы данных MySQL:
Try
Dim MySubject As String = "Email Subject Line"
Dim MyMessageBody As String = "This is the email body."
Dim RecipientEmail As String = "[email protected]"
Dim SenderEmail As String = "[email protected]"
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
Я надеюсь, что этот код поможет OP, но также и любому, кому нравится, когда я прихожу к партии поздно. Наслаждайтесь.
Ответ 4
Логика кнопки ОТПРАВИТЬ:
string fromaddr = "[email protected]";
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);
Этот код работает на 100%. Если в вашей системе или брандмауэре есть антивирус, который ограничивает отправку почты из вашей системы, отключите антивирус и брандмауэр. После этого запустите этот код... В этом коде выше TextBox1.Text
управления используется для TOaddress
.
Ответ 5
" https://www.google.com/settings/security/lesssecureapps" используйте эту ссылку после входа в свою учетную запись gmail и нажмите "Включить". После запуска вашего приложения она будет работать уверенно.
Ответ 6
Если вы получаете сообщение об ошибке "Нераспознанный атрибут enableSsl" при следовании совету добавить этот параметр в ваш файл web.config. Я обнаружил, что смог обойти ошибку, добавив ее в мой файл кода в следующем формате:
SmtpClient smtp = new SmtpClient();
smtp.EnableSsl = true;
try
{
smtp.Send(mm);
}
catch (Exception ex)
{
MsgBox("Message not emailed: " + ex.ToString());
}
Это раздел system.net моего web.config:
<system.net>
<mailSettings>
<smtp from="<from_email>">
<network host="smtp.gmail.com"
port="587"
userName="<your_email>"
password="<your_app_password>" />
</smtp>
</mailSettings>
</system.net>
Ответ 7
Если вы передаете (как и я) все параметры, такие как порт, имя пользователя, пароль, через систему и вам не разрешено изменять код, то вы можете легко изменить это в web.config
:
<system.net>
<mailSettings>
<smtp>
<network enableSsl="true"/>
</smtp>
</mailSettings>
</system.net>
Ответ 8
Я также получил ту же ошибку, используя код:
MailMessage mail = new MailMessage();
mail.To.Add(txtEmail.Text.Trim());
mail.To.Add("[email protected]");
mail.From = new MailAddress("[email protected]");
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("[email protected]", "password");
// smtp.Port = 587;
//Or your Smtp Email ID and Password
smtp.UseDefaultCredentials = false;
// smtp.EnableSsl = true;
smtp.Send(mail);
Но перемещение на 2 строки вверх решило проблему:
MailMessage mail = new MailMessage();
mail.To.Add(txtEmail.Text.Trim());
mail.To.Add("[email protected]");
mail.From = new MailAddress("[email protected]");
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.UseDefaultCredentials = false;
smtp.EnableSsl = true;
smtp.Credentials = new System.Net.NetworkCredential("[email protected]", "password");
// smtp.Port = 587;
//Or your Smtp Email ID and Password
smtp.Send(mail);
Ответ 9
**this is first part of program**
<head runat="server">
<title></title>
<style>
.style4
{
margin-left:90px;
}
.style3{
margin-left:130px;
}
.style2{
color:white;
margin-left:100px;
height:400px;
width:450px;
text-align:left;
}
.style1{
height:450px;
width:550px;
margin-left:450px;
margin-top:100px;
margin-right:500px;
background-color:rgba(0,0,0,0.9);
}
body{
margin:0;
padding:0;
}
body{
background-image:url("/stock/50.jpg");
background-size:cover;
background-repeat:no-repeat;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<div class="style1">
<table class="style2">
<tr>
<td colspan="2"><h1 class="style4">Sending Email</h1></td>
</tr>
<tr>
<td>To</td>
<td><asp:TextBox ID="txtto" runat="server" Height="20px" Width="250px" placeholder="[email protected]"></asp:TextBox><asp:RequiredFieldValidator ForeColor="Red" runat="server" ErrorMessage="Required" ControlToValidate="txtto" Display="Dynamic"></asp:RequiredFieldValidator><asp:RegularExpressionValidator runat="server" ForeColor="Red" ControlToValidate="txtto" Display="Dynamic" ErrorMessage="Invalid Email_ID" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator> </td>
</tr>
<tr>
<td>From</td>
<td><asp:TextBox ID="txtfrom" runat="server" Height="20px" Width="250px" placeholder="[email protected]"></asp:TextBox> <asp:RequiredFieldValidator ForeColor="Red" Display="Dynamic" runat="server" ErrorMessage="Required" ControlToValidate="txtfrom"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator Display="Dynamic" runat="server" ErrorMessage="Invalid Email-ID" ControlToValidate="txtfrom" ForeColor="Red" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator>
</td>
</tr>
<tr>
<td>Subject</td>
<td><asp:TextBox ID="txtsubject" runat="server" Height="20px" Width="250px" placeholder="Demonstration on Youtube"></asp:TextBox><asp:RequiredFieldValidator ForeColor="Red" runat="server" ErrorMessage="Required" ControlToValidate="txtsubject"></asp:RequiredFieldValidator> </td>
</tr>
<tr>
<td>Body</td>
<td><asp:TextBox ID="txtbody" runat="server" Width="250px" TextMode="MultiLine" Rows="5" placeholder="This is the body text"></asp:TextBox><asp:RequiredFieldValidator ForeColor="Red" runat="server" ErrorMessage="Required" ControlToValidate="txtbody"></asp:RequiredFieldValidator> </td>
</tr>
<tr>
<td colspan="2"><asp:Button CssClass="style3" BackColor="Green" BorderColor="green" ID="send" Text="Send" runat="server" Height="30px" Width="100px" OnClick="send_Click"/></td>
</tr>
<tr>
<td colspan="2"><asp:Label ID="lblmessage" runat="server"></asp:Label> </td>
</tr>
</table>
</div>
</div>
</form>
</body>
</html>
**this is second part of program**
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net.Mail;
namespace WebApplication6
{
public partial class sendingemail1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void send_Click(object sender, EventArgs e)
{
try
{
MailMessage message = new MailMessage();
message.To.Add(txtto.Text);
message.Subject = txtsubject.Text;
message.Body = txtbody.Text;
message.From = new MailAddress(txtfrom.Text);
SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
client.EnableSsl = true;
client.Credentials = new System.Net.NetworkCredential(txtfrom.Text, "[email protected]");
for(int i=1;i<=100;i++)
{
client.Send(message);
lblmessage.Text = "Mail Successfully send";
}
}
catch (Exception ex)
{
lblmessage.Text = ex.Message;
}
}
}
}