【发布时间】:2013-04-09 08:10:54
【问题描述】:
当使用 system.net/mail web.config 设置来配置我的 SmtpClient 时,它无法发送电子邮件,并出现 Base64 编码和身份验证问题最好描述的“协议错误”:
示例:
使用以下配置
<system.net>
<mailSettings>
<smtp from="email@server.com">
<network host="servermail.outsourced.com"
port="2525"
defaultCredentials="false"
userName="username"
password="password"/>
</smtp>
</mailSettings>
</system.net>
还有代码:
var tmp = new SmtpClient();
MailMessage msg = new MailMessage();
msg.Subject = "test";
msg.From = new MailAddress("me@server.com");
msg.To.Add(new MailAddress("me@server.com"));
msg.Body = "test";
tmp.Send(msg);
产生错误信息:
System.Net.Mail.SmtpException: The server committed a protocol violation The server response was: UGFzc3dvcmQ6
at System.Net.Mail.MailCommand.CheckResponse(SmtpStatusCode statusCode, String response)
at System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection recipients, String deliveryNotify, SmtpFailedRecipientException
& exception)
at System.Net.Mail.SmtpClient.Send(MailMessage message)
但是,在我手动设置所有属性的以下代码中,代码运行无异常并且电子邮件已送达。
var tmp2 = new SmtpClient("servermail.outsourced.com", 2525);
tmp2.Credentials = new NetworkCredential("username", "password");
tmp2.UseDefaultCredentials = false;
MailMessage msg = new MailMessage();
msg.Subject = "test";
msg.From = new MailAddress("me@server.com");
msg.To.Add(new MailAddress("me@server.com"));
msg.Body = "test";
tmp2.Send(msg);
【问题讨论】:
-
如果你解码 UGFzc3dvcmQ6 你会得到“密码:”所以你的身份验证显然有问题。我自己对此进行了测试,没有任何问题。可能重复:stackoverflow.com/questions/2380531/…
-
这是我最初的怀疑,除了相同的凭据在通过网络配置设置时会产生错误,而在使用代码设置时会起作用。
-
使用的邮件服务器是什么?
-
您能诊断出您的问题吗?
标签: asp.net smtpclient