smtpclient.sendasync无法使用太多收件人

时间:2011-04-11 14:18:41

标签: .net wpf email smtpclient

此应用程序是使用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);

2 个答案:

答案 0 :(得分:2)

限制可能来自SMTP服务器本身:这些设置是为了防止向各种收件人发送电子邮件,原因有多种(从合法到商业再到性能)。

请与SMTP服务器的提供商核实实际限制。通过限制操作和/或使用允许更多收件人的SMTP服务器解决此问题。

例如,请参阅this IIS documentation:它说明如果限制为100,并且您的收件人列表长度为105个地址,则只会处理前100个地址。

答案 1 :(得分:0)

使用SendAsync向多个收件人发送电子邮件时,如果SMTP服务器接受某些收件人为有效并拒绝其他收件人,则会针对内部异常抛出一个带有NullReferenceException的SmtpException。如果发生这种情况,SendAsync无法向任何收件人发送电子邮件。

Microsoft Site