私の MVC4 アプリケーションでは、 を使用して、SmtpClient
Gmail のsmtp.gmail.com
SMTP サーバー経由で電子メールを送信しています。
次の設定で Web.Config ファイルを構成しました。
<system.net>
<mailSettings>
<smtp deliveryMethod="Network">
<network enableSsl="true"
defaultCredentials="false"
host="smtp.gmail.com"
port="587"
userName="xxMyUserNamexx@gmail.com"
password="xxMyPasswordxx" />
</smtp>
</mailSettings>
</system.net>
SmtpClient を使用して電子メール メッセージを送信するメソッドは次のようになります。
public void SendMail(string fromDisplayName, string fromEmailAddress, string toEmailAddress, string subject, string body)
{
MailAddress from = new MailAddress(fromEmailAddress, fromDisplayName);
MailAddress to = new MailAddress(toEmailAddress);
MailMessage mailMessage = new MailMessage(from, to);
mailMessage.Body = body;
mailMessage.Subject = subject;
SmtpClient client = new SmtpClient();
//client.UseDefaultCredentials = false;
client.Send(mailMessage);
}
上記のコードは期待どおりに機能し、問題ありません。私を混乱させているのは、コメント行ですclient.UseDefaultCredentials = false;
。その行のコメントを外すと、次のような例外メッセージが表示されます。
SMTP サーバーが安全な接続を必要としているか、クライアントが認証されていません。サーバーの応答は次のとおりです。5.5.1 認証が必要です。
UseDefaultCredentials
さらに、プロパティをtrue
またはに設定しても問題ありませんfalse
。それでも例外メッセージが表示されます。例外メッセージを回避する唯一の方法は、行を完全に削除することです。
この動作は正常ですか?例外メッセージが表示される理由を説明できますか?