2017-07-20 3 views
0

Webアプリケーションのバックグラウンドタスクを作成しました。問題がある場合は15分ごとに電子メールをクライアントに送信します。私は電子メールを送信するためにGmailを使用しています。MailKit SmtpClient送信メソッドはFluentSchedulerを使用している間初めてですが、その後は使用しません

public virtual void Send(string body, string attachment) 
    { 
     message.From.Add(GetFromAddress()); 
     message.To.AddRange(GetToAddresses()); 
     message.Subject = "Error"; 
     message.Body = CreateBody(body, attachment); 

     using (var SmtpClient = new SmtpClient()) 
     { 
      try 
      { 
       if (!SmtpClient.IsConnected) 
       { 
        ConnectToGmail(SmtpClient); 
       } 

       SmtpClient.Send(message); 
       SmtpClient.Disconnect(true); 
      } 
      catch (Exception ex) 
      { 
       logger.Error(ex.ToString()); 
      } 
     } 
    } 

私はそれは、その後、電子メールが送信されたメソッドを送信するために取得するプロジェクト、最初の時間を実行します。しかし、次にSendメソッドに到達すると、それ以上電子メールは送信されません。例外はスローされません。迷惑メールフォルダには何もありません。

この問題は何か?誰かがそれのようなものを持っていましたか?

+0

あなたは 'Spam'フォルダをチェックしましたか? – opewix

+0

はい、そこには何もありません。 –

+0

私は同じSmtpClientを使用し、私は 'Disconnect'メソッドを全く呼び出さない – opewix

答えて

0

私は私の問題の答えを見つけました。私はMimeMessageを一度作成し、毎回その同じメッセージに常に追加しました。今すぐ私は新しいMimeMessageを作成して送信するたびに動作します。

public virtual void Send(string body, string attachment) 
    { 
     var message = new MimeMessage(); 
     message.From.Add(GetFromAddress()); 
     message.To.AddRange(GetToAddresses()); 
     message.Subject = "Kiosk error"; 
     message.Body = CreateBody(body, attachment); 

     using (var SmtpClient = new SmtpClient()) 
     { 
      try 
      { 
       if (!SmtpClient.IsConnected) 
       { 
        ConnectToGmail(SmtpClient); 
       } 

       SmtpClient.Send(message); 
       SmtpClient.Disconnect(true); 
      } 
      catch (Exception ex) 
      { 
       logger.Error(ex.ToString()); 
      } 
     } 
    } 
+0

問題は、SMTPサーバーが同じMessage-Idで複数のメッセージを送信できないため、送信するたびにMessageIdプロパティを変更するだけで問題が生じる可能性があります。 – jstedfast

関連する問題