2009-07-21 7 views
2

Je viens de remarquer que certaines opérations de messagerie dans mon code ont échoué et j'essaie de le réparer, mais je reçois toujours l'erreur suivante:Impossible de passer des emails via l'échange: Une connexion existante a été fermée par l'hôte distant

System.Net.Mail.SmtpException: Failure sending mail. ---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. 
---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host 
    at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags) 
    at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) 
    --- End of inner exception stack trace --- 
    at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) 
    at System.Net.DelegatedStream.Read(Byte[] buffer, Int32 offset, Int32 count) 
    at System.Net.BufferedReadStream.Read(Byte[] buffer, Int32 offset, Int32 count) 
    at System.Net.Mail.SmtpReplyReaderFactory.ReadLines(SmtpReplyReader caller, Boolean oneLine) 
    at System.Net.Mail.SmtpReplyReaderFactory.ReadLine(SmtpReplyReader caller) 
    at System.Net.Mail.SmtpConnection.GetConnection(String host, Int32 port) 
    at System.Net.Mail.SmtpTransport.GetConnection(String host, Int32 port) 
    at System.Net.Mail.SmtpClient.GetConnection() 
    at System.Net.Mail.SmtpClient.Send(MailMessage message) 
    --- End of inner exception stack trace --- 
    at System.Net.Mail.SmtpClient.Send(MailMessage message) 

Mon code est assez simple:

MailMessage mail = new MailMessage(); 
mail.To.Add(email_to); 
mail.From = new MailAddress(email_from); 
mail.Subject = email_subject; 
mail.Body = email_body; 


var client = new SmtpClient(smtp_server_url); 
client.Credentials = new NetworkCredential(username, password, domain); 
client.Timeout = 30000; 
client.Send(mail); 

est-ce que quelqu'un a des idées ce qui pourrait se passer? Notre administrateur de serveur d'échange dit qu'elle ne peut rien voir dans le journal.

Aussi, pas que ce soit une surprise, mais la même chose arrive quand j'essaye d'envoyer un message de powershell.

Répondre

1

Généralement quand je vois que c'est une configuration sur le serveur Exchange. Dans notre environnement, nos administrateurs réseau doivent permettre explicitement aux machines d'utiliser le serveur Exchange comme relais. Si la machine sur laquelle mon code s'exécute n'est pas explicitement ajoutée au serveur, je reçois ce message. J'espère que ça aide.

+0

Merci, mais ce n'est pas ça, je peux envoyer de perspectives très bien. C'est seulement avec l'envoi de code .NET que j'ai un problème –

+0

Je suis également méfiant des problèmes de configuration/auth. Cela fonctionne-t-il si email_from et email_to sont définis sur votre adresse e-mail (la même que celle que vous utilisez pour l'échange)? – jsight

+0

Vous savez peut-être déjà, pardonnez-moi si je suppose, mais je ne voudrais pas ignorer les paramètres du serveur Exchange juste parce que vous pouvez envoyer un courriel via Outlook, Envoi de courrier à partir d'un ordinateur utilise le System.net. SmtpClient, qui se connecte via SMTP. C'est différent de la façon dont Outlook se connecte. Les administrateurs doivent autoriser spécifiquement la machine à utiliser le serveur comme relais pour le courrier SMTP. Cette cabine doit être par l'IP de la machine et les informations d'identification du client ou les deux. – David

3

L'a obtenu! Essentiellement, il semble que cette erreur (Code d'erreur 10054) se produit lorsque vous vous connectez à un serveur avec succès, mais que vous lui demandez ensuite de faire quelque chose pour lequel il n'est pas équipé.

Dans mon cas est ici ce qui est arrivé:

  • Je l'habitude d'envoyer du courrier par notre courrier face à l'avant serveur mail.mycompany.com
  • Ce n'est pas l'adresse du serveur d'échange cependant, il est l'adresse à laquelle vous pointez votre navigateur pour accéder à Outlook en ligne.
  • Cela a bien fonctionné précédemment puisque les demandes non-web pour cette adresse ont été acheminées au serveur d'échange. À un moment donné, cette politique a été modifiée - dans notre cas, parce que la gestion du spam a été transférée à AT & T. Bien sûr, je n'ai pas été informé de tout cela.
  • Puisqu'un serveur fonctionnait sur ce site, il me permettait de me connecter, mais je perdais la connexion immédiatement (ou je ne pouvais même pas l'ouvrir complètement)
  • Définir le nom d'hôte correct problème.
Questions connexes