2011-04-11 139 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

相關問題