2010-07-13 6 views
8

Je travaille sur un projet où l'une des exigences est de réécrire une application ASP.NET. L'ancienne application ASP.NET était basée sur .NET Framework 1.1. La nouvelle application ASP.NET est basée sur .NET Framework 3.5.ASP.NET - SmtpClient - Impossible de se connecter au serveur distant

L'une des fonctions de l'ancienne application Web était la possibilité d'envoyer des courriels. L'ancien code utilisait la classe System.Web.Mail.SmtpMail, tandis que la nouvelle application Web utilisait la classe System.Net.Mail.SmtpClient. En testant ceci sur nos serveurs de développement, tout a bien fonctionné. Cependant, nous avons deux clients bêta testant notre logiciel, et ils rencontrent tous les deux des problèmes d'envoi de courrier électronique dans la nouvelle application web.

L'exception spécifique est la suivante:

Impossible de se connecter au serveur distant ---> System.Net.Sockets.SocketException: il n'a pu être connexion parce que la machine cible activement refusé

Les anciennes et nouvelles applications ASP.NET sont sur le même serveur (Windows Server 2003). Ils utilisent tous les deux le même serveur de messagerie Exchange. Pourquoi est-ce que l'ancienne application ASP.NET peut envoyer un courrier électronique avec succès, mais le nouveau ne le peut pas? J'ai regardé l'ancien code, et il n'a utilisé aucune forme d'authentification, il a simplement spécifié l'adresse e-mail de l'expéditeur, l'adresse e-mail du destinataire, l'objet, le corps et le serveur, et envoyé le message. J'ai fait la même chose avec le nouveau code, la seule différence étant que j'ai utilisé la classe SmtpClient.

Voici un extrait de code de la nouvelle application ASP.NET:

System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage(); 
mail.To.Add(messageTo); 
mail.From = new MailAddress(messageFrom); 
mail.Subject = messageSubject; 
mail.Body = messageBody; 

SmtpClient client = new SmtpClient(); 
client.Host = smtpServer; 
client.Send(mail); 
+0

Y a-t-il quelque chose dans les journaux Exchange qui indique qu'il refuse la connexion? – David

+0

Je n'y ai pas accès et je ne pense pas que le client beta puisse y avoir accès non plus. Encore une fois, cela a bien fonctionné de notre côté. C'est une fonctionnalité assez basique. – Chris

+0

Comment spécifiez-vous le serveur? dans le constructeur du SmptClient, ou dans web.config? pouvez-vous poster du code? – onof

Répondre

5

Le « Impossible de se connecter au serveur distant ---> System.Net.Sockets.SocketException: Aucune connexion n'a pu être établie car la machine cible activement refusé » erreur signifie généralement que le port TCP vous essayer de se connecter à n'a aucun service d'écoute, c'est-à-dire qu'il est fermé et qu'une connexion tcp n'a pas pu être établie, sans parler d'une connexion SMTP.

Rien ne s'affichera dans vos journaux d'échange car il échoue à un niveau inférieur dans la pile réseau et votre serveur de messagerie ne verra même pas la tentative de connexion.

Pouvez-vous également publier le code .net1.1? Le problème le plus probable est que le serveur écoute sur un port non standard et que vous ne spécifiez pas ce port dans le nouveau code. Veuillez noter que vous devez définir le port en utilisant la propriété Port, vous ne pouvez pas simplement l'ajouter à la propriété Host, par exemple.

Mauvais:

client.Host = "mail.someco.com:10000"; 

Correct:

client.Host = "mail.someco.com"; 
client.Port = 10000; 
0

Vous êtes sûr la propriété SmtpServer du System.Web.Mail.SmtpMail est situé dans l'ancien code? Il était possible de l'utiliser sans définir cette propriété, puis il utilisait le service SMTP du serveur local. System.Web.Mail.SmtpMail.SmtpServer

0

Avez-u vérifier le fichier web.config pour la configuration hôte smtp? Vous devriez copier la section de configuration sur votre application.

3

Si vous utilisez un logiciel antivirus, vérifiez qu'il s'agit d'un journal pour voir si c'est à cause de l'antivirus. J'ai fait face au même problème lorsque McAffee bloquait mes mails (il existe une politique de sécurité - Empêche les vers de masse d'envoyer des mails). Modifiez cette stratégie et ajoutez votre application à la liste d'exceptions. Dans mon cas, cela a réglé le problème. Veuillez vérifier si cela fonctionne pour vous.

Questions connexes