it-swarm.com.de

"Es wurde versucht, während der Verwendung von SMTP auf einen Socket zuzugreifen, der durch seine Zugriffsberechtigungen verboten ist"

Ich versuche, Mail-C # zu senden, wenn bestimmte Werte in der Datenbank den Schwellenwert überschreiten.

Ich habe bereits Port 25.587 und 465 in der Windows-Firewall zugelassen. Deaktiviert die Option, Massenmails im Antivirus zu verhindern. Der Code, den ich verwende, ist unten angegeben

using System.Net;
using System.Net.Mail;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;

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


        // Subject and Body
        mailMsg.Subject = "MCAS Alert";
        mailMsg.Body = "Parameter out of range";


        SmtpClient smtpClient = new SmtpClient("smtp.servername.com", 25);
        smtpClient.UseDefaultCredentials = false;
        smtpClient.Timeout = 30000;
        System.Net.NetworkCredential credentials =
           new System.Net.NetworkCredential("username", "passwrod");
        smtpClient.Credentials = credentials;
        smtpClient.EnableSsl = true;
        //ServicePointManager.ServerCertificateValidationCallback = delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };
        smtpClient.Send(mailMsg);

Stapelverfolgung

[SocketException (0x271d): An attempt was made to access a socket in a way forbidden by its access permissions xx.xx.xx.xx:25]
   System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) +208
   System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception) +464

[WebException: Unable to connect to the remote server]
   System.Net.ServicePoint.GetConnection(PooledStream PooledStream, Object owner, Boolean async, IPAddress& address, Socket& abortSocket, Socket& abortSocket6) +6486360
   System.Net.PooledStream.Activate(Object owningObject, Boolean async, GeneralAsyncDelegate asyncCallback) +307
   System.Net.PooledStream.Activate(Object owningObject, GeneralAsyncDelegate asyncCallback) +19
   System.Net.ConnectionPool.GetConnection(Object owningObject, GeneralAsyncDelegate asyncCallback, Int32 creationTimeout) +324
   System.Net.Mail.SmtpConnection.GetConnection(ServicePoint servicePoint) +141
   System.Net.Mail.SmtpTransport.GetConnection(ServicePoint servicePoint) +170
   System.Net.Mail.SmtpClient.GetConnection() +44
   System.Net.Mail.SmtpClient.Send(MailMessage message) +1554

[SmtpException: Failure sending mail.]
   System.Net.Mail.SmtpClient.Send(MailMessage message) +1906
   Admin_Alert.SMTPAuth() in c:\Users\spandya\Documents\Visual Studio 2012\WebSites\WebSite3\Admin\Alert.aspx.cs:61
   Admin_Alert.Page_Load(Object sender, EventArgs e) in c:\Users\spandya\Documents\Visual Studio 2012\WebSites\WebSite3\Admin\Alert.aspx.cs:22
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +51
   System.Web.UI.Control.OnLoad(EventArgs e) +92
   System.Web.UI.Control.LoadRecursive() +54
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +772

Was fehlt mir hier noch? Eingehende Firewall-Regeln gibt es für diese spezifischen Portadressen.

19
SPandya

Ok, so wichtig, um die Implikationen hier zu erkennen. 

Docs sagen, dass SSL über 465 in SmtpClient NICHT unterstützt wird. 

Anscheinend haben Sie keine andere Wahl, als STARTTLS zu verwenden, das von Ihrem Mail-Host möglicherweise nicht unterstützt wird. Möglicherweise müssen Sie eine andere Bibliothek verwenden, wenn Ihr Host die Verwendung von SSL über 465 erfordert.

Zitiert aus http://msdn.Microsoft.com/de-de/library/system.net.mail.smtpclient.enablessl(v=vs.110).aspx

Die SmtpClient-Klasse unterstützt nur die SMTP-Serviceerweiterung für sichere SMTP über Transportschichtsicherheit, wie in RFC 3207 definiert. In diesem Modus beginnt die SMTP-Sitzung auf einem unverschlüsselten Kanal. Anschließend gibt der Client den Befehl STARTTLS an den Server aus, zu dem gewechselt werden soll Sichere Kommunikation mit SSL. Weitere Informationen finden Sie unter RFC 3207, veröffentlicht von der Internet Engineering Task Force (IETF).

Eine alternative Verbindungsmethode ist die Vorbereitung einer SSL-Sitzung, bevor Protokollbefehle gesendet werden. Diese Verbindungsmethode wird manchmal als SMTP/SSL, SMTP über SSL oder SMTPS bezeichnet und verwendet standardmäßig Port 465. Diese alternative Verbindungsmethode, die SSL verwendet, wird derzeit nicht unterstützt.

10
SlaterCodes

Bitte bestätigen Sie, dass Ihre Firewall ausgehenden Datenverkehr zulässt und Sie nicht durch Antivirensoftware blockiert werden. 

Ich habe das gleiche Problem erhalten und der Täter war Antivirensoftware. 

19
Glenn Ferrie

Die Windows-Firewall hat diesen Fehler für mich erstellt. SMTP hat versucht, an Port 587 an GMAIL zu senden. Durch Hinzufügen von Port 587 zur Outbound-Regel [Outbound HTTP/SMTP/RDP] wurde das Problem behoben.

4
Chris Sharp

Ich habe diesen Fehler erhalten:

System.Net.Sockets.SocketException: An attempt was made to access a socket in a way forbidden by its access permissions

wenn der Port von einem anderen Programm benutzt wurde .

4
Tom Andraszek

Ich hatte das gleiche Problem. Es funktionierte gut auf dem lokalen Rechner, hatte aber Probleme auf dem Server. Ich habe die SMTP-Einstellung geändert. Es funktioniert gut für mich.

Wenn Sie GoDaddy Plesk Hosting verwenden, verwenden Sie die folgenden SMTP-Details.

Host = relay-hosting.secureserver.net
Port = 25 
0
Sandeep Jepin