2011-04-11 2 views
1

Это приложение является приложением WPF для Windows с использованием C#,smtpclient.sendasync не работает слишком много получателей

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

Я использую 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("[email protected]"); 
      msg.To.Add (new MailAddress("[email protected]")); 

      // 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

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

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

См., Например, this IIS documentation: в нем указано, что если предел равен 100, а ваш список получателей будет содержать 105 адресов, будут обрабатываться только первые 100 адресов.

0

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

Microsoft Site