18

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="me@xyz.com" 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認証を使用する」です。

4

2 に答える 2

30

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

于 2010-10-22T04:10:42.397 に答える
1

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

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

于 2010-09-01T19:05:48.373 に答える