web-dev-qa-db-ja.com

設定ファイルのMailSettingsを使用したSMTP認証

MailSettingsをweb.configに保存していますが、メッセージを送信すると、SMTPサーバーから認証を使用する必要があることが報告されます。設定ファイルにユーザー名/パスワードがありますが、それでも失敗します。

次のようにすれば動作しますが、余分な手順のようです。設定ファイルから取得して、認証を自動的に使用するべきではありませんか?

System.Configuration.Configuration config = WebConfigurationManager.OpenWebConfiguration(
    HttpContext.Current.Request.ApplicationPath);
MailSettingsSectionGroup settings =
    (MailSettingsSectionGroup) config.GetSectionGroup("system.net/mailSettings");

SmtpClient client = new SmtpClient();
client.Credentials = new NetworkCredential(
   settings.Smtp.Network.UserName, settings.Smtp.Network.Password);

Web.config

<system.net>
    <mailSettings>
        <smtp from="[email protected]" deliveryMethod="Network">
            <network Host="mail.xyz.com" defaultCredentials="true"
                userName="me@xyzcom" password="abc123" />
        </smtp>
    </mailSettings>
 </system.net>

System.Net.Mail.SmtpException

ストレージ割り当てを超えました。サーバーの応答は次のとおりです。SMTP認証を使用してください。 http://www.myISP.com/support/smtp-authentication.aspx を参照してください

「ストレージ割り当ての超過」はかなり長い間混​​乱していましたが、現在は無視しています。重要なのは「SMTP認証を使用する」ことです。

17
Eric

コード化されたアプローチとweb.configのみアプローチの違いは、後者にはdefaultCredentials="true"が設定されていることです。そのため、このアプローチでは、ユーザー名とパスワードが認証に使用されるのを防いでいます。これを「false」に設定する(または「false」がデフォルトであるため完全に削除する)ことで問題は解決すると思います。

28
Mike Green

SmtpClientクラスは、構成からユーザー名またはパスワードを明示的に読み取る必要なしに、authパラメーターを使用する必要があります。 http://msdn.Microsoft.com/en-us/library/system.net.mail.smtpclient.aspx を参照してください。

設定からSystem.Netセグメントを投稿できますか?また、SMTPサーバーから受け取った正確なエラーを投稿できますか?

1
Peter Mourfield