我正在尝试使用我的isp发送4封电子邮件。 (不是JUNK MAIL,我发送到我的地址)
我从循环中逐个发送它们(因为我构建它们)。每条消息都是50kb-80kb
MailMessage mailmessage = new MailMessage();
mailmessage.To.Add(to);
mailmessage.From = new MailAddress(from, "From");
mailmessage.IsBodyHtml = true;
mailmessage.Priority = MailPriority.Normal;
mailmessage.Subject = subject;
mailmessage.Body = body;
SmtpClient smtpclient = new SmtpClient(server, 25); //use this PORT!
smtpclient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpclient.Credentials = new NetworkCredential(user, pass);
smtpclient.Send(mailmessage);
在上一条消息中我收到此错误:
服务不可用,关闭 传输通道。服务器 回复是:连接未被接受 此时
更新
在此错误之后的某些时候,我甚至无法发送任何电子邮件(使用此服务器)甚至来自Outlook Express等其他应用程序,我收到错误:
大约一分钟后,我可以再次发送。发生了未知错误。 帐户:'MailServerAddress',服务器: 'MailServerAddress'',协议:SMTP, 服务器响应:'421连接没有 此时接受',港口:25, 安全(SSL):否,服务器错误:421, 错误号码:0x800CCC67
答案 0 :(得分:1)
始终确保您的发件人地址也是有效邮箱,因此退回邮件实际上会回复给您,许多ISP禁止完全使用其他(未注册的)发件人地址。正如其他人的评论中指出的那样,ISP通常也会对速率进行限制,因此您必须根据ISP的期望对发送代码进行微调,这可能很乏味。
一般来说,出于某种原因发送电子邮件既是艺术又是科学。如果您尝试将其用于生产系统,我只建议您使用某些服务,例如SendGrid或Mailgun。即使您的邮件服务器接受邮件,它也可能在另一个ISP邮件服务器上受到限制,因为大多数ISP都有一定的限制,并且电子邮件路由非常复杂。您也可以快速点击垃圾邮件过滤器。对于我的ISP,无论出于何种原因,自动邮件总是在googlemail中发送垃圾邮件。
对于开发,Mailgun每天免费提供200封电子邮件,这在开始时应该足够了。此外,SMTP是一种非常慢的协议,因此使用它们的HTTP接口可以节省一些服务器时间。
答案 1 :(得分:1)
我不完全,但在这里非常相似的问题:
SMTP send email failure by SmtpClinet (SmarterEmail server)
问题是我的本地ISP正在关闭25端口。
您是否测试了其他一些端口,例如587?