System.Web.Mailが動作する場所でSystem.Net.Mailが失敗する理由



Answers

ジメルの答えは正面に戻る。 彼は、新しいシステムを使用すると言います。 NETの .Mailライブラリが、問題はそのシステムです。 net .Mailは、Systemのようなポート465のSSLでは機能しません。 Web。メールはうまくやった!

私はこの一日中、同じ設定のシステムに対して私の頭を打ちました。 ウェブ。メールワークス、システム。 Net .Mailは動作しません(少なくとも私がテストしているSMTPサーバーの場合)。ここでは、常に最新のものをMicrosoftの最新のものにアップグレードする必要があると考えていました。 :-(

M $ブログへのそのリンクはそれをすべて述べているようだ。 "System.Net.Mailは"明示的なSSL "のみをサポートしています。" 暗黙のSSLが必要なSMTPサーバーをテストしていると仮定します。 (これはYahooサーバーのbtwです)。

新しいAPIへの「アップグレード」は暗黙的なSSLを必要とするサーバーを持つユーザーのための機能を損なうことは間違いないので、この場合は「アップグレードする」ステップのように見えます。 警告だけでコンパイルできる場合は、それらの警告を無効にして(私が思い出した場合は0618)、トラック運転を続けます。 ああ、あなたのアプリケーションは常に、あなたが構築してconfigファイルを使ってテストした.NETフレームワークバージョンに対して確実に実行されるようにすることができます。M $があなたのアプリケーションが安全です。

Question

私はSystem.Net.MailとSystem.Web.Mailの両方をGmailに取り込むことができますが、両方ともsmtp.att.yahoo.comで動作させることはできません。

自分のWeb.configキーからSMTP設定を取得します。 これらの設定は、System.Web.Mailを使用して送信すると機能しますが、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"/>

ここで私の設定を取得し、GMailで動作するコードは、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);

これは私の問題ですか?

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




Links