2016-04-06 8 views
0

Ich versuche, eine E-Mail mit C# Konsole zu senden, aber jedes Mal mit Fehlern andernfalls sagen:C# Senden von E-Ausfälle

Failure sending mail. ---> System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: An attempt was made to access a socket in a way forbidden by its access permissions 173.194.65.109:587 

dies mein C# -Code ist:

SmtpClient client = new SmtpClient(); 
client.DeliveryMethod = SmtpDeliveryMethod.Network; 
client.EnableSsl = true; 
client.Host = "smtp.gmail.com"; 
client.Port = 587; 

// setup Smtp authentication 
System.Net.NetworkCredential credentials = new System.Net.NetworkCredential("[email protected]", "myPassword"); 
client.UseDefaultCredentials = false; 
client.Credentials = credentials; 

MailMessage msg = new MailMessage(); 
msg.From = new MailAddress("[email protected]"); 
msg.To.Add(new MailAddress("[email protected]")); 

msg.Subject = "This is a test Email subject"; 
msg.IsBodyHtml = true; 
msg.Body = string.Format("<html><head></head><body><b>Test HTML Email</b></body>"); 
client.Send(msg); 

Ich habe auch versucht zu verwenden:

client.UseDefaultCredentials = true; 

aber immer noch kein Erfolg.

Dies ist ein generischer C# -Code, der im gesamten Web in jedem Forum geschrieben wird ... aber es hilft mir nicht.

+1

Sie müssen einen anderen Port angeben –

+0

Ihr Code funktioniert gut für mich. Sie müssen den Port nicht wie vorgeschlagen ändern.Mögliche Serverprobleme bei GMail heute Morgen? Versuche es noch einmal. Postausgangsserver (SMTP): \t smtp.gmail.com - Verwendung Authentifizierung: Ja - Port für SSL: 465 oder 587 – ShaneLS

+0

Wenn Sie ein Heim-Internet verwenden, sind einige Anbieter sehr streng, welche Ports offen sind. – Henry

Antwort

0

ich kann hier an 2 Probleme denken. Der erste Port 587 ist nicht geöffnet, dies ist sehr unwahrscheinlich, da es sich um einen Standardport für Mail handelt, aber Sie wissen nie.

Zweitens scheint Ihr Code in Ordnung, aber Sie haben möglicherweise einige Teile in Ihrer app.config-Datei vergessen. So etwas vermute ich.

<system.net> 
    <mailSettings> 
    <smtp> 
     <network host="[email protected]" port="9999" userName="[email protected]" password="OurOrganisationEmailPassword"/> 
    </smtp> 
    </mailSettings> 
</system.net> 
+0

Ich entschuldige mich für den Downvote. Ich bekam ein kleines Klicken, traf es zufällig und bemerkte es erst jetzt. – ShaneLS

0

Der einzige Grund, warum ich denken kann, ist, dass Ihr Netzwerk (Software oder Hardware-Firewall, Router oder Modem) ausgehende Datenverkehr-Server blockiert auf 587 oder GMail gestern hatten Probleme. 587 ist jedoch ein Standard-SMTP-SSL-Port und erkennt keinen Grund, dass er blockiert wird, da er auch von E-Mail-Clients wie MS Outlook verwendet wird. Sonst ist dein Code in Ordnung (er wurde von meinem Büro aus getestet). Du hast recht, das ist ziemlich Standard-Code für das Senden von E-Mail über .net SmtpClient. Vielleicht möchten Sie den Port 465 von GMail ausprobieren (nicht standardisiert, aber manchmal aus Legacy-Gründen), nur um zu sehen, ob Sie damit weitermachen können.

GMail Support (https://support.google.com/mail/troubleshooter/1668960?hl=en&rd=1) -

Outgoing Mail (SMTP) Server:
    smtp.gmail.com
    Authentifizierung verwenden: Ja
   -Port für SSL: 465 oder 587

FYI, Sie können beide fallen lassen:

client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;

Sie sind nicht für ein SMTP zu GMail erforderlich. Der UseDefaultCredentials Flag kann tatsächlich Login Probleme verursachen, wenn Sie es ein, nachdem Sie Credentials Set (die Sie haben nicht getan und würde Ihre aktuelle Ausgabe nicht sein). Und DeliveryMethod würde nur benötigt, wenn Sie die Standardlieferungsmethode der App (Config) bereits auf SmtpDeliveryMethod.Network geändert haben.