此应用程序是使用C#,
的WPF Windows应用程序我正在尝试向相当长的收件人列表发送电子邮件。让我首先说明这不是垃圾邮件,因为这些人已经注册了此列表。
我正在使用smtpclient.sendasync。当我将它发送给1到3个人时,这可以很好地进行测试,但是当我将它发送到整个邮件列表时,它无法正常工作。列表中的数字是2623.没有错误消息;这只是收据没有收到电子邮件。这是一个调试问题,因为我无法测试它,例如,将它发送给100个人,因为那将是垃圾邮件。
请参阅下面的代码。注意我更改了电子邮件地址以防止发送垃圾邮件。
Int32 _MessageCount = 0;
MailMessage msg = new MailMessage();
SmtpClient client = new SmtpClient(Configuration.smtpServer);
string _PriorEMail = "";
msg.From = new MailAddress("a@b.com");
msg.To.Add (new MailAddress("a@b.com"));
// bcc to the list
foreach (string str in EmailToAddresses)
{
if (clsUtilities.IsAnEmail(str) == true && str != _PriorEMail)
{ // process only valid emails and avoid dups
_MessageCount += 1;
msg.Bcc.Add(new MailAddress(str));
_PriorEMail = str;
}
}
msg.Subject = EmailSubject;
msg.IsBodyHtml = true;
msg.Body = EmailBodyHtml;
client.SendAsync(msg,null);
答案 0 :(得分:2)
限制可能来自SMTP服务器本身:这些设置是为了防止向各种收件人发送电子邮件,原因有多种(从合法到商业再到性能)。
请与SMTP服务器的提供商核实实际限制。通过限制操作和/或使用允许更多收件人的SMTP服务器解决此问题。
例如,请参阅this IIS documentation:它说明如果限制为100,并且您的收件人列表长度为105个地址,则只会处理前100个地址。
答案 1 :(得分:0)
使用SendAsync向多个收件人发送电子邮件时,如果SMTP服务器接受某些收件人为有效并拒绝其他收件人,则会针对内部异常抛出一个带有NullReferenceException的SmtpException。如果发生这种情况,SendAsync无法向任何收件人发送电子邮件。