smtpclient.sendasync не работает со слишком многими получателями - PullRequest
1 голос
/ 11 апреля 2011

Это приложение для Windows WPF, использующее C #,

Я пытаюсь отправить письмо довольно длинному списку получателей. Позвольте мне с самого начала заявить, что это не спам, поскольку эти люди подписались на этот список.

Я использую 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 ]

2 голосов
/ 11 апреля 2011

Ограничение, вероятно, исходит от самого SMTP-сервера: они настроены на предотвращение отправки электронной почты огромному количеству получателей по разным причинам (от юридического через бизнес до производительности).

Узнайте у поставщика SMTP-сервера фактические ограничения. Чтобы обойти это, нужно ограничить операцию и / или использовать SMTP-сервер, который позволяет большему количеству получателей.

См., Например, эту документацию IIS : в ней говорится, что если ограничение равно 100, а список получателей имеет длину 105 адресов, будут обработаны только первые 100 адресов.

0 голосов
/ 02 февраля 2012

При отправке электронной почты с использованием SendAsync нескольким получателям, если SMTP-сервер принимает одних получателей как допустимых и отклоняет других, возникает исключение SmtpException с NullReferenceException для внутреннего исключения.В этом случае SendAsync не может отправить электронное письмо любому из получателей.

Сайт Microsoft

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...