2017-04-05 2 views
5

Wenn ich versuche, STMP-E-Mail in ASP.NET mit SSL auf meiner neuen GoDaddy-E-Mail-Adresse zu senden, funktioniert es nicht. Ich erhalte eine Fehlermeldung sagen Unable to read data from the transport connection: net_io_connectionclosed.SMTP-E-Mail-Nachricht mit SSL funktioniert nicht mit GoDaddy-E-Mail-Adresse in ASP.NET

hier die E-Mail-Einstellungen für den Server sind:

enter image description here

Hier ist der Ausschnitt aus meinem web.config mit den E-Mail-Server-Informationen:

<system.net> 
    <mailSettings> 
    <smtp from="[email protected]" > 
     <network host="smtpout.secureserver.net" port="465" userName="[email protected]" password="password123" enableSsl="true" /> 
    </smtp> 
    </mailSettings> 
</system.net> 

Und hier ist der C# -Code, der die E-Mail sendet.

MailMessage message = new MailMessage(); 
message.To.Add(new MailAddress(to)); 
message.Subject = "Message from " + inputModel.Name; 
message.Body = body; 
message.IsBodyHtml = true; 

using (var smtp = new SmtpClient()) 
{ 
    smtp.Send(message); 
} 

Ports 80, 3535 und 25 funktionieren ohne SSL, aber keiner der vier Arbeits mit SSL. Ich habe sogar Port 587 mit SSL ausprobiert, und nach ziemlich langer Zeit läuft es einfach ab.

Wie kann ich diese E-Mails mit SSL senden?

Antwort

3

Viel darüber in this older question, einschließlich der Beschreibung des Problems - dass SmtpClient unterstützt nur "explizite SSL", und Sie müssen "implizite SSL" tun, um nur SSL auf Port 465 direkt zu sprechen.

Ein besserer und modernerer Ansatz als die dort diskutierten Optionen ist die Verwendung einer gut gepflegten Bibliothek mit impliziter SSL-Unterstützung. MailKit wäre ein guter Weg, um dies zu erreichen.

Alternativ können Sie einen E-Mail-Relay-Dienst eines Drittanbieters verwenden, z. B. SendGrid, Mandrill, Mailgun und andere. Dadurch erhöhen sich Ihre Chancen, dass Nutzer Ihre E-Mails tatsächlich in ihrem Posteingang erhalten, und nicht nur ein Spam-/Junk-Ordner.

1

Von Ihrem Screenshot nehme ich an, dass Ihre Seite gehostet wird außerhalb der godaddy, dann können Sie "smtpout.secureserver.net" verwenden.

, wenn Ihre Website auf GoDaddy gehostet, dann müssen Sie Config wie folgt ändern:

<system.net> 
     <mailSettings> 
     <smtp from="[email protected]"> 
     <network host="relay-hosting.secureserver.net"/> 
     </smtp> 
     </mailSettings> 
    </system.net> 

Wenn Sie Explicit ssl Versuchen Sie verwenden möchten, den Hafen von 465-587

Für Implicit SSL zu ändern wir verwendeten netimplicitssl:

hier ist die Probe aus this Antwort

01 genommen
var mailMessage = new MimeMailMessage(); 
mailMessage.Subject = "test mail"; 
mailMessage.Body = "hi dude!"; 
mailMessage.Sender = new MimeMailAddress("[email protected]", "your name"); 
mailMessage.IsBodyHtml = true; 
mailMessage.To.Add(new MimeMailAddress("[email protected]", "your friendd's name")); 
mailMessage.Attachments.Add(new MimeAttachment("your file address")); 
var emailer = new SmtpSocketClient(); 
emailer.Host = "your mail server address"; 
emailer.Port = 465; 
emailer.EnableSsl = true; 
emailer.User = "mail sever user name"; 
emailer.Password = "mail sever password" ; 
emailer.AuthenticationMode = AuthenticationType.PlainText; 
emailer.MailMessage = mailMessage; 
emailer.OnMailSent += new SendCompletedEventHandler(OnMailSent); 
//Send email 
emailer.SendMessageAsync(); 

// A simple call back function: 
private void OnMailSent(object sender, AsyncCompletedEventArgs asynccompletedeventargs) 
{ 
    Console.Out.WriteLine(asynccompletedeventargs.UserState.ToString()); 
} 
Verwandte Themen