我正在开发ASP.NET MVC的网站。
我在IdentityConfig.cs
:
public Task SendAsync(IdentityMessage message)
{
SmtpClient client = new SmtpClient();
var msg = new MailMessage();
msg.From = new MailAddress("info@mywebsite.com");
msg.To.Add(message.Destination);
msg.Subject = message.Subject;
msg.Body = message.Body;
client.Host = "mywebsite.com";
client.Port = 25;
client.Credentials = new
System.Net.NetworkCredential("info@mywebsite.com", "mypassword");
return client.SendMailAsync(msg);
}
我在IIS 8中设置了SMTP服务,这个功能正常。
问题是当我在Web.config
中配置SMTP凭据并尝试发送电子邮件时。 MailSettings Web.config
的一部分如下:
<system.net>
<mailSettings>
<smtp>
<network host="mywebsite.com"
port="25" userName="info@mywebsite.com" password="mypassword" />
</smtp>
</mailSettings>
</system.net>
,新的SendAsync功能是:
public Task SendAsync(IdentityMessage message)
{
SmtpClient client = new SmtpClient();
var msg = new MailMessage();
msg.From = new MailAddress("info@mywebsite.com");
msg.To.Add(message.Destination);
msg.Subject = message.Subject;
msg.Body = message.Body;
return client.SendMailAsync(msg);
}
但是当我在控制器中运行时,会出现以下错误:
错误的命令序列。 服务器响应是: 尝试发送到非本地电子邮件地址时,此邮件服务器需要身份验证。 请检查您的邮件客户端设置或联系您的管理员以验证是否为此服务器定义了域或地址。
可能是什么原因?
答案 0 :(得分:2)
尝试将defaultCredentials添加到false
<network
clientDomain="mywebsite.com"
defaultCredentials="false"
enableSsl="true"
host="smtp.gmail.com"
port="587"
userName="sender@mywebsite.it" password="xxxxxxx"
/>
请注意,对于某些服务器(例如gmail),message.From
需要与用户名