在我的 MVC4 应用程序中,我使用通过 Gmail 的SMTP 服务器SmtpClient
发送电子邮件。smtp.gmail.com
我已经使用以下设置配置了我的 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
or false
,我仍然会收到异常消息。我避免异常消息的唯一方法是完全删除该行。
这种行为正常吗?您能解释一下为什么我会收到异常消息吗?