我正在构建C#.NET系统,并具有以下Webmail Mail Client手册设置:
Username: noreply@domain.com
Password: password123
Incoming Server: mail.domain.com (IMAP Port: 993, POP3 Port: 995)
Outgoing Server: mail.domain.com (SMTP Port: 465)
我的系统正在尝试使用以下设置发送电子邮件:
方法1:在控制器方法中
MailDefinition md = new MailDefinition();
md.From = "noreply@domain.com";
md.IsBodyHtml = true;
md.Subject = "subject";
MailMessage mm = md.CreateMailMessage("user1@gmail.com", null, "Some Text", new System.Web.UI.Control());
mm.From = new MailAddress("noreply@domain.com", "System Name");
SmtpClient smtp = new SmtpClient();
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential("noreply@domain.com", "password123");
smtp.Host = "mail.domain.com";
smtp.Port = 465; //tried for 25, 587
smtp.EnableSsl = true;
smtp.Timeout = 40000;
smtp.Send(mm);
方法2:在web.config中
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="noreply@domain.com">
<network host="mail.domain.com" port="465" userName="noreply@domain.com" password="password123" defaultCredentials="false" enableSsl="true" />
</smtp>
</mailSettings>
</system.net>
我有两种方法,也尝试了不同的端口:25、26、587仍然有错误,例如“操作已超时”。
不同端口的错误信息如下:
Port 25: Mailbox unavailable. The server response was: Error458 block
Port 26: Mailbox unavailable. The server response was: Error458 block
Port 465: The operation has timed out
Port 587: Mailbox unavailable. The server response was: Error458 block
我还搜索了Error458,它的意思是“无法为节点排队消息”,但是没有解决此错误的方法。有人可以帮忙吗?
答案 0 :(得分:0)
您的SMTP服务器似乎有问题。根据{{3}}:
由于队列的处理可能需要不确定的数量
时间,此命令应立即返回并响应
客户端主机。此命令的有效返回码为:250 OK,正在排队启动节点
251 OK,没有消息正在等待节点
252 OK,已启动节点的待处理消息
253 OK,节点的待处理消息已启动
458无法将节点的消息排队
459不允许的节点:
500语法错误
参数中的501语法错误250响应代码不表示将发送消息 到有问题的系统,只是队列已经启动并且 将会发生一些动作。如果服务器能够支持它, 251、252或253响应代码应用于提供更多信息
信息发送给客户端。在这种情况下,如果有消息
等待客户端节点,可以使用
执行检查 这些响应代码表示何时不再存在
该节点的队列中的未决消息。应使用458和459结果代码提供更多信息 信息返回到客户端主机,说明为何未执行该操作 执行。如果请求的语法不正确,则 应该使用500和501结果代码。