Question

Je peux faire fonctionner à la fois System.Net.Mail et System.Web.Mail avec GMail, mais je ne peux pas les faire fonctionner tous les deux avec smtp.att.yahoo.com.

Je récupère les paramètres SMTP à partir de mes propres clés Web.config. Ces paramètres fonctionnent lorsque j'envoie avec System.Web.Mail, mais échouent avec System.Net.Mail.

    <add key="SmtpServer" value="smtp.att.yahoo.com"/>
    <add key="SmtpServerAuthenticateUser" value="ctrager@sbcglobal.net"/>
    <add key="SmtpServerPort" value="465"/>
    <add key="SmtpUseSSL" value="1"/>
    <add key="SmtpServerAuthenticatePassword" value="MY PASSWORD"/>

Voici le code qui saisit mes paramètres et fonctionne avec GMail mais échoue avec att.yahoo:

        SmtpClient smtp;

        if (!string.IsNullOrEmpty(Util.get_setting("SmtpServer", "")))
        {
           smtp = new SmtpClient(Util.get_setting("SmtpServer", ""));
        }
        else
        {
           smtp = new SmtpClient();
        }


        if (!string.IsNullOrEmpty(Util.get_setting("SmtpServerAuthenticatePassword", "")))
           smtp.Credentials = new System.Net.NetworkCredential(
               Util.get_setting("SmtpServerAuthenticateUser", ""), 
               Util.get_setting("SmtpServerAuthenticatePassword", ""));

        if (!string.IsNullOrEmpty(Util.get_setting("SmtpServerPort", "")))
           smtp.Port = int.Parse(Util.get_setting("SmtpServerPort", ""));

        if (Util.get_setting("SmtpUseSSL", "0") == "1")
           smtp.EnableSsl = true;

        smtp.Send(message);

Est-ce mon problème?

http://blogs.msdn.com/webdav_101/archive/2008/06/02/system-net-mail-with-ssl-to-authenticate-against-port-465.aspx

Était-ce utile?

La solution

J'ai appris la réponse. La réponse est:

Étant donné que System.Net.Mail ne prend pas en charge "implicite". SSL, uniquement " explicite " SSL.

Autres conseils

Les réponses précédentes concernant les connexions SSL implicites et explicites via System.Net.Mail sont absolument correctes. Pour surmonter cet obstacle, et sans avoir à utiliser System.Web.Mail, désormais obsolète, j'ai utilisé le CDO (Collaborative Data Objects).

J'ai détaillé et donné un exemple sur un autre poste de débordement de pile ( GMail SMTP via des erreurs C # .Net sur tous les ports ) si vous êtes curieux. Sinon, vous pouvez accéder directement à l'article de la base de connaissances à l'adresse http://support.microsoft.com/kb/310212. .

J'espère que ça aide!

La réponse de Gimel est inversée. Il dit utiliser la nouvelle bibliothèque System. Net .Mail, mais le problème est que System. Net .Mail ne fonctionne pas pour SSL sur le port 465 comme System. Web .Mail a / fonctionne vraiment!

Je me suis heurté la tête toute la journée et pour des paramètres identiques. Système. Web .Mail WORKS et Système. Internet .Mail NE FONCTIONNE PAS (du moins pour le serveur SMTP avec lequel j’ai testé), et j’étais persuadé que je devais toujours passer à la dernière offre de Microsoft pour obtenir le meilleur de la vie. : - (

Ce lien vers le blog M $ semble tout dire; "System.Net.Mail prend uniquement en charge“ SSL explicite ”. " et je suppose que le serveur SMTP que j'ai testé avec veut SSL implicite. (C’est un serveur Yahoo).

Depuis "mise à niveau" La nouvelle API va sans aucun doute perturber la fonctionnalité pour les utilisateurs dont les serveurs nécessitent un protocole SSL implicite, ce qui semble être un retour en arrière pour "mettre à niveau". dans ce cas. Si vous ne pouvez toujours compiler qu'avec des avertissements, désactivez simplement ces avertissements (0618 si je me souviens bien) et continuez à transporter. Oh, et vous voudrez peut-être envisager de faire en sorte que votre application fonctionne toujours par rapport à la version du framework .NET que vous avez construite et testée au moyen d'un fichier de configuration, comme si à l'avenir si M $ déchirait l'ancienne API, votre application est sécurisée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top