2017-11-02 3 views
0

Ich habe einen SmtpClient, der funktioniert, wenn ich es localhost ausführen. Doch auf dem Server von Google Cloud kehrt:SmtpClient funktioniert nicht auf Google Cloud-Server

System.Net.Mail.SmtpException: Failure sending mail. ---> System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond xx.xx.xx.xx:587 

Mein Code:

MailMessage mailMessage = new MailMessage(); 
mailMessage.To.Add("User email"); 
mailMessage.From = new MailAddress("My Company Email"); 
mailMessage.Subject = "Test"; 
mailMessage.Body = "MSG Test"; 

SmtpClient smtp = new SmtpClient(); 
smtp.Host = "smtp.mycompany.com"; //Or Your SMTP Server Address 
smtp.Port = 587; 
smtp.UseDefaultCredentials = false; 
smtp.Credentials = new System.Net.NetworkCredential 
("[email protected]", "password"); 
smtp.Send(mailMessage); 

Wer weiß, warum? Sollte ich Azure anstelle von Google Cloud für .net-Anwendungen verwenden?

Dank

+1

Standardmäßig haben öffentliche SMTP-Server sehr restriktive Regeln zum Stoppen von Spam.Sind Sie sicher, dass Sie beispielsweise Ihre Quell-IP-Adresse auf die weiße Liste gesetzt haben? Ich habe es gerade mit Telnet getestet und es hat geantwortet. –

+1

Ich werde Ihre Frage bearbeiten und die IP-Adresse auslöschen. –

+0

versuchen Sie Port 25 auf Live statt 587 – Zoinky

Antwort

2

I Verdacht Das Problem ist, dass Verkehr auf Port 587 auf Compute Engine standardmäßig blockiert ist, mit Ausnahme von bekannten IP-Adressen.

Von dem firewall documentation:

Compute Engine blockiert oder schränkt Verkehr durch alle folgenden Ports/Protokolle zwischen dem Internet und virtuellen Maschinen und zwischen zwei virtuellen Maschinen, wenn Besucher auf ihre externen IP-Adressen durch gerichtet Diese Ports (dazu gehören auch Adressen mit Lastenausgleich). Diese Ports sind permanent blockiert. Sie können nicht mit Firewall-Regeln geöffnet werden.

  • ...
  • meist ausgehender Datenverkehr auf Port 465 oder 587 (SMTP über SSL) ist, mit Ausnahme der bekannten Google-IP-Adressen blockiert.

Auch aus der "Sending Email from an Instance" Dokumentation:

Google Compute Engine nicht ausgehende Verbindungen auf 25 Ports erlauben, 465 und 587. Standardmäßig diese ausgehenden SMTP-Ports sind wegen der blockierten eine große Menge an Missbrauch sind diese Ports anfällig für. Darüber hinaus entlastet ein vertrauenswürdiger Drittanbieter wie SendGrid, Mailgun oder Mailjet die Compute Engine und Sie können die IP-Reputation bei Ihren Empfängern aufrechterhalten.

Die letzte Dokumentationsseite bietet eine Reihe alternativer Ansätze.

0

SSL/TS1.2 und Ziel .NET 4.5+ finden Sie unter: 1, 2

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; 
SmtpClient smtp = new SmtpClient(); 
smtp.Host = "smtp.mycompany.com"; //Or Your SMTP Server Address 
smtp.Port = 587; 
smtp.EnableSsl = true; 

...

Darüber hinaus müssen Sie zulassen less secure apps und überprüfen Sie TLS compliance, wenn Sie über Ihre GMail senden.

Verwandte Themen