Ich versuche, E-Mails mit Google Mail zu senden, und ich erhalte eine Ausnahme, die 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
lautet.
code, den ich zum Versenden von Mails geschrieben habe, ist
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);
Bitte sagen Sie mir Lösungen, für diese Ausnahmen bekomme ich keine Lösungen.
Für Google Mail müssen Sie eine sichere Verbindung verwenden. Dies kann in Ihrer web.config folgendermaßen eingestellt werden:
<network Host="smtp.gmail.com" enableSsl="true" ... />
ODER
Das SSL sollte auch auf dem Webserver aktiviert sein. __ Siehe folgenden Link
Schritt (1): smtp.EnableSsl = true;
wenn nicht genug:
Schritt (2): " Zugriff für weniger sichere Apps" muss für das von NetworkCredential
mit Google-Einstellungsseite :
Dieses Thema hat mich auch über Nacht verfolgt. So beheben Sie es:
Dies ist der TLS-Port. Ich hatte alle anderen SMTP-Ports ohne Erfolg verwendet. Wenn Sie enableSsl = true
so einstellen:
Dim SMTP As New SmtpClient(Host)
SMTP.EnableSsl = True
Schneiden Sie die Felder für Benutzername und Kennwort ab (eine gute Möglichkeit, Fehler zu vermeiden, wenn der Benutzer bei der Registrierung die E-Mail-Adresse und das Kennwort wie bei meiner Registrierung eingibt):
SMTP.Credentials = New System.Net.NetworkCredential(EmailFrom.Trim(), EmailFromPassword.Trim())
Wenn Sie den TLS-Port verwenden, wird Ihr SMTP als SMTPS behandelt, sodass Sie sich authentifizieren können. Ich erhielt umgehend eine Warnung von Google, dass meine E-Mail eine App blockiert, die Sicherheitsrisiken aufweist oder veraltet ist. Ich fuhr fort mit "Weniger sichere Apps aktivieren". Dann habe ich die Informationen zu meiner Telefonnummer aktualisiert und Google hat mir einen Bestätigungscode per Text gesendet. Ich habe es eingegeben und voila!
Ich habe die Anwendung erneut ausgeführt und war erfolgreich. Ich weiß, dass dieser Thread alt ist, aber ich habe das Netz durchforstet und alle Ausnahmen gelesen und nach jeder Zeile MsgBoxes hinzugefügt, um zu sehen, was schief lief. Hier ist mein Arbeitscode für die Lesbarkeit modifiziert, da alle meine Variablen aus der MySQL-Datenbank stammen:
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
Ich hoffe, dass dieser Code der OP hilft, aber auch jeder, der wie ich spät zu der Party kommt. Genießen.
SENDEN-Tastenlogik
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);
-> Dieser Code funktioniert zu 100%. Wenn sich in Ihrem System ein Virenschutzprogramm befindet, das die Virenschutzsoftware-Firewall einschränkt. Beschränken Sie das Senden von E-Mails von unserem System. Deaktivieren Sie daher Ihr Virenschutz- und Firewall-System. Nach diesem Code diesen Code ausführen .... In diesem Code wird das TextBox1.Text-Steuerelement für TOaddress verwendet
Wenn Sie den Fehler "Unbekanntes Attribut 'enableSsl'" erhalten, wenn Sie den Anweisungen zum Hinzufügen dieses Parameters zu Ihrer web.config folgen. Ich habe festgestellt, dass ich den Fehler umgehen konnte, indem ich ihn stattdessen in meinem Code in diesem Format hinzufügte:
SmtpClient smtp = new SmtpClient();
smtp.EnableSsl = true;
try
{
smtp.Send(mm);
}
catch (Exception ex)
{
MsgBox("Message not emailed: " + ex.ToString());
}
Dies ist der Abschnitt system.net meiner 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>
Wenn Sie (wie ich) alle Parameter wie Port, Benutzername und Kennwort durch ein System übergeben und Sie den Code nicht ändern dürfen, können Sie dies in der web.config einfach ändern:
<system.net>
<mailSettings>
<smtp>
<network enableSsl="true"/>
</smtp>
</mailSettings>
</system.net>
" https://www.google.com/settings/security/lesssecureapps " Verwenden Sie diesen Link, nachdem Sie sich in Ihrem Google Mail-Konto angemeldet haben, und klicken Sie auf "Aktivieren". Wenn Sie dann Ihre Anwendung ausführen, funktioniert sie sicher.
Ich habe auch den gleichen Fehler mit dem Code erhalten:
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);
Das Verschieben von 2 Zeilen nach oben hat das Problem behoben:
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);
**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;
}
}
}
}