2017-03-21 30 views
0

私はC#コードを使用して電子メールを送信しようとしていますが、1人に送信すると電子メールが送信されましたが、複数の人に送信すると送信されません。 「操作がタイムアウトしました」というエラーが表示されます。私はそれの背後に理由を取得していないよ。理由を見つけるのを助けてください。"操作がタイムアウトしました。"

コード:

public string SendEmail(List<string> ToEmailAddresses,string body, string emailSubject) 
    { 
     var smtp = new SmtpClient { DeliveryMethod = SmtpDeliveryMethod.Network }; 

     smtp.Host = "xyz-host-name"; 

     smtp.Port = 25; 

     smtp.EnableSsl = false; 

     var fromAddress = new MailAddress(ConfigurationManager.AppSettings["MailUserName"], "Rewards and Recognition Team"); 

     using (var message = new MailMessage() { Subject = emailSubject, Body = body }) 
     { 
      message.From = fromAddress; 

      foreach (string email in ToEmailAddresses) 
      { 
       message.To.Add(email); 
      } 
      message.IsBodyHtml = true; 
      try 
      { 
       _logger.Log("EmailService-SendEmail-try"); 
       smtp.Send(message); 
       return "Success"; 
      } 
      catch (Exception ex) 
      { 
       _logger.Log("EmailService-SendEmail-" + ex.Message); 
       return "Error"; 
      } 
     } 
    } 
+1

あなたの完全なコードを投稿する –

+0

あなたの完全なコードを投稿すれば、エラーを見つけることができます。 – PRABA

+0

複数の受信者に電子メールを送信するのは簡単ではないことに注意してください。多くのメールは迷惑メールとして拒否される可能性があります。 – i486

答えて

1

あなたには、いくつかの時間がかかることが何かをしようとしているときはいつでも、それは常に別のスレッドでそれを実行するか、または非同期メソッドを使用することをお勧めします。

私はSmtpClient.SendAsyncメソッドを使用することをお勧めします。

public string SendEmail(List<string> ToEmailAddresses, string body, string emailSubject) 

へ:変更、これを行うには

public async string SendEmail(List<string> ToEmailAddresses, string body, string emailSubject) 

とはawait smtp.SendAsync(...)ではなくsmtp.Send(...)含まれています。これにより、メールを送信しながら「」というメッセージでアプリケーションをグレーアウトさせずに、UIスレッドをさらに実行できるようになります。

パラメータと備考を含むsmtp.SendAsync(...)の詳細については、MSDN documentationを参照してください。

関連する問題