使用SmtpClient发送邮件时,疑难解答"服务器提交了协议违规"

Min*_*amy 6 c# asp.net smtpclient

我想和SmtpClient班级一起发送邮件.

这是我使用的代码:

SmtpClient smtpClient = new SmtpClient("Host",25);
NetworkCredential basicCredential =
new NetworkCredential("UserName", "Password");
MailMessage message = new MailMessage();
MailAddress fromAddress = new MailAddress("me@domain.com");
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = basicCredential;
message.From = fromAddress;
message.Subject = "test send";
message.IsBodyHtml = true;
message.Body = "<h1>hello</h1>";
message.To.Add("mail@domain.com");
smtpClient.Send(message);
Run Code Online (Sandbox Code Playgroud)

但它总是抛出异常:

服务器提交了协议违规服务器响应:UGFzc3dvcmQ6

我找不到原因.如果有人遇到这样的事情,请告诉我该怎么做.

Rez*_*eza 7

我遇到了同样的问题,我的意思是设置用户@域而不是用户

旧代码

new NetworkCredential("UserName@domain.com", "Password");
Run Code Online (Sandbox Code Playgroud)

新代码

new NetworkCredential("UserName", "Password");
Run Code Online (Sandbox Code Playgroud)


Mar*_*oth 5

这对我来说就像SmtpClient身份验证在某种程度上是不合时宜的.

一些认证机制是"客户端:用户名和密码,服务器要求身份验证:成功/失败"别人"客户:请输入帐号,服务器要求身份验证:要求密码,客户端:与回复密码,服务器:成功/失败".

看起来SmtpClient期待前者,而你的服务器期待后者.

正如dave goa建议的那样,会话日志会告诉你SmtpClient尝试使用什么auth机制,但它也会说服务器支持哪种auth机制.

通常发生的是服务器提供了许多验证选项,客户选择它将使用哪一个.那里的行为应该由所选择的协议决定.我希望SmtpClient课程能为你解决这个问题,但我担心我从未使用过那个特定的课程.

还记得 - 如果你打算在这里发表日志,更改为一次性密码登录会话之前,为Base64编码的明文密码可以平凡变回人类可读的明文密码.