ASP.NET - SmtpClient - Verbindung zum Remoteserver kann nicht hergestellt werden

8

Ich arbeite an einem Projekt, bei dem eine der Anforderungen darin besteht, eine ASP.NET-Anwendung neu zu schreiben. Die alte ASP.NET-Anwendung basierte auf .NET Framework 1.1. Die neue ASP.NET-Anwendung basiert auf .NET Framework 3.5.

Eine der Funktionen in der alten Webanwendung war die Möglichkeit, E-Mails zu senden. Der alte Code verwendet die Klasse System.Web.Mail.SmtpMail , während die neue Webanwendung die Klasse System.Net.Mail.SmtpClient verwendet.

Beim Testen auf unseren Entwicklungsservern hat alles funktioniert. Wir haben jedoch zwei Beta-Clients, die unsere Software testen, und beide haben Probleme beim Senden von E-Mails in der neuen Webanwendung.

Die spezifische Ausnahme ist wie folgt:

  

Verbindung zum Remote-Server nicht möglich --- & gt; System.Net.Sockets.SocketException: Es konnte keine Verbindung hergestellt werden, weil der Zielcomputer dies aktiv abgelehnt hat

Sowohl die alte als auch die neue ASP.NET-Anwendung befinden sich auf demselben Server (Windows Server 2003). Beide verwenden denselben Exchange-Mail-Server. Warum kann die alte ASP.NET-Anwendung erfolgreich E-Mails senden, aber die neue kann nicht?

Ich habe mir den alten Code angesehen, und er hat keine Form der Authentifizierung verwendet, sondern nur die E-Mail-Adresse des Absenders, die E-Mail-Adresse des Empfängers, den Betreff, den Text und den Server angegeben und die Nachricht gesendet. Ich habe dasselbe im neuen Code gemacht, mit dem einzigen Unterschied, dass ich die SmtpClient-Klasse verwendet habe.

Im Folgenden finden Sie ein Code-Snippet aus der neuen ASP.NET-Anwendung:

%Vor%     
Chris 13.07.2010, 14:40
quelle

4 Antworten

5

Das "Verbindung zum entfernten Server konnte nicht hergestellt werden ... & gt; System.Net.Sockets.SocketException: Es konnte keine Verbindung hergestellt werden, da das Zielgerät dies aktiv ablehnte." Fehler bedeutet normalerweise, dass Der TCP-Port, mit dem Sie eine Verbindung herstellen möchten, hat keinen Dienst, der darauf wartet, dh er ist geschlossen, und eine TCP-Verbindung konnte nicht hergestellt werden, geschweige denn eine SMTP-Verbindung.

In Ihren Exchange-Protokollen wird nichts angezeigt, da es auf einer niedrigeren Ebene im Netzwerkstapel fehlschlägt und Ihr Mailserver den Verbindungsversuch nicht sehen kann.

Können Sie den .net1.1-Code auch posten? Das wahrscheinlichste Problem ist, dass der Server einen nicht standardmäßigen Port überwacht und Sie diesen Port nicht im neuen Code angeben. Beachten Sie, dass Sie den Port mithilfe der Eigenschaft Port festlegen müssen. Sie können ihn nicht einfach an die Eigenschaft Host anhängen, z. B.

Falsch:

%Vor%

Richtig:

%Vor%     
Ben Robinson 13.07.2010, 14:54
quelle
3

Wenn Sie eine Antivirensoftware verwenden, prüfen Sie, ob das Antivirenprogramm für Sie geeignet ist. Ich hatte dasselbe Problem, als McAffee meine E-Mails blockierte (es gibt eine Sicherheitsrichtlinie - Verhindern, dass Massen-Mail-Würmer E-Mails senden). Bearbeiten Sie diese Richtlinie und fügen Sie Ihre Anwendung zur Ausnahmeliste hinzu. In meinem Fall hat das das Problem gelöst. Bitte überprüfen Sie, ob es für Sie funktioniert.

    
Pachu 12.03.2012 11:31
quelle
0

Sie sind sicher, dass die SmtpServer-Eigenschaft von System.Web.Mail.SmtpMail im alten Code festgelegt ist? Es war möglich, es zu verwenden, ohne diese Eigenschaft festzulegen, und dann verwendete es den SMTP-Dienst des lokalen Servers. System.Web.Mail.SmtpMail.SmtpServer

>     
quelle
0

Sie haben die Datei web.config für die Konfiguration des SMTP-Hosts überprüft? Sie sollten den Konfigurationsbereich in Ihre App kopieren.

    
TrustyCoder 13.07.2010 15:13
quelle

Tags und Links