我有一个for循环,调用一些代码发送电子邮件。我收到以下运行时错误:
服务不可用,关闭传输通道。服务器 回复是:4.4.2该客户的消息提交率 超出配置的限制
谷歌搜索后似乎与“set-receiveconnector”有关,可能是交换服务器吗?有人可以建议我如何解决这个问题吗?
代码:
var mail = new MailMessage();
var smtpServer = new SmtpClient(SMTPServer);
mail.From = new MailAddress(fromAddress);
mail.To.Add(toAddress);
mail.Subject = title;
mail.IsBodyHtml = isHTML;
mail.Body = message;
if(attach != null) mail.Attachments.Add(attach);
smtpServer.Port = xxx
smtpServer.UseDefaultCredentials = false;
smtpServer.Credentials = new NetworkCredential(SMTPUser, SMTPPassword);
smtpServer.EnableSsl = true;
smtpServer.Send(mail); //Error occurs here
答案 0 :(得分:1)
而不是直接发送电子邮件,您可以使用提取文件夹吗?
SmtpMail.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
那样你只需将邮件转储到文件夹中,并让交换机在准备就绪时发送它们,这样如果你的用户只能发送说每分钟3次交换应该发送3然后在下一次发送时发送另外3个等等
答案 1 :(得分:0)
我通过使用正确的端口在我的系统上解决了这个问题。设置交换的方式意味着SSL = TRUE,Port = 587产生了这个错误。如果我将其更改为使用端口25,那么一切正常。所以请咨询您的系统管理员,这可能有所帮助!
答案 2 :(得分:0)
我们通过将接收连接器设置为一次允许超过 5 条消息,从 Exchange 端修复了此问题,例如:
Get-ExchangeServer | Set-ReceiveConnector "My Receive Connector" -Messageratelimit 20