C# SMTP d'envoi de courrier code échoue pour Yahoo Mail mais qui fonctionne bien pour les autres serveurs, quelqu'un peut-il aider?
Je suis en utilisant ce code pour envoyer un e-mail SMTP via le serveur SMTP de yahoo, c'est pour un projet personnel, je suis en train d'écrire.
using System.Net.Mail;
using System.Net;
SmtpClient theClient = new SmtpClient("smtp.mail.yahoo.com", 465);
theClient.UseDefaultCredentials = false;
theClient.Credentials = new NetworkCredential("username", "password");
theClient.EnableSsl = true;
MailMessage theMessage = new MailMessage("[email protected]",
"[email protected]");
theMessage.Subject = "Dave test from C# subject";
theMessage.Body = "Dave test from C# body";
theClient.Send(theMessage);
C'est assez standard code pour l'envoi d'e-mail SMTP, mais... le serveur semble jeter une erreur. Force met fin à la connexion. Cela ne se produit pas si je peux utiliser d'autres serveurs SMTP comme Gmail, Windows Live ou divers autres FAI serveurs Smtp.
C'est l'exception et la trace de la pile:
System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.
at System.Net.Mail.SmtpClient.Send(MailMessage message)
at ConsoleApplication1.Program.Main(String[] args) in E:\dev\ARCSoftware.FTPProcessor\ConsoleApplication1\Program.cs:line 28
Je sais que le problème n'est pas l'environnement mais comme je peut envoyer le même serveur avec ces paramètres à l'aide d'Outlook Express. Je me demande si j'ai besoin d'envoyer un certificat ou quelque chose?
Si vous, ou quelqu'un que vous savez où a des idées sur ce que j'apprécierais un peu d'aide.
- Yahoo a probablement (différents) anti-spam politiques en place. Vous aurez à consulter les règles.
- Sont les NetworkCredential paramètres corrects? nom d'utilisateur étant l'adresse e-mail complète
- Merci pour l'entrée chaps. Oui, j'ai vérifié leur documentation et ils spécifier le nom d'utilisateur sans le @yahoo.com. Comme je l'ai dit il fonctionne bien Outlook Express avec le extact mêmes paramètres.
- Est-il un Yahoo compte Plus, ou tout simplement une gratuitement? Je sais que POP3 est seulement disponible pour le Yahoo, Plus les comptes et à se demander si la même chose s'applique pour le SMTP côté trop?
- Êtes-vous absolument sûr que vous pouvez envoyer des e-mail dans Outlook? J'avais cru comprendre que vous aviez à la mise à niveau vers Yahoo Mail Plus d'utiliser un client tiers.
- C'est un gratuit. Je sais que je peux envoyer par e-mail SMTP si mon compte comme il fonctionne par le biais d'Outlook Express.
- de vérifier et de comparer le protocole et le port des paramètres dans Outlook Ex. Mais Yahoo pourrait encore intéresser à d'autres fonctions.
- Grâce Henk. Phil, oui, je suis sûr que j'ai envoyé un mail via OE, j'ai reçu des e-mails via mon compte Gmail donc je sais que ça fonctionne. Les châteaux de statto du post ci-dessous peut être la réponse si!
Vous devez vous connecter pour publier un commentaire.
Il n'est pas soutenu par 465, mais le post suivant détaille une solution de contournement
Comment puis-je envoyer des e-mails via le protocole SSL SMTP avec le .NET Framework?
Mise à JOUR: Ce lien détails pourquoi il peut fonctionner par le biais d'Outlook Express, mais pas à travers le Système.Net.Mail
http://blogs.msdn.com/b/webdav_101/archive/2008/06/02/system-net-mail-with-ssl-to-authenticate-against-port-465.aspx
Port 465 n'est pas pris en charge par le Système.Net.Mail.SmtpClient.
http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.enablessl.aspx
Dans la Section Remarques:
Edit:
Vous pouvez essayer d'utiliser le port 587 au lieu de cela (si Yahoo prend en charge).
J'ai eu le même problème jusqu'à ce que je définissez le port 587 et désactivé SSL.
Je pense que vous devriez revenir à
using System.Web.Mail
qui vous permet de contrôler les champs qui ne sont pas accessibles par le plus récent System.Net.Essayez de jouer avec ceux-ci. Par exemple, vous pourriez essayer ceci:
(utilisation est documentée ici, les champs sont documentées ici)