EXMディスパッチ リトライヤの設定方法


解説

ConnectionLostTimeout、またはGreetingError以外の理由でSMTP障害が発生し、SMTP接続ができない場合、メッセージの送信が一時停止することがあります。その際ログには以下のような関連する例外が記録されます:

smtpSocketConnect:
   socket2Connect:
     connect2:
       ConnectFailReason: Connection rejected
     --connect2
   --socket2Connect
   Failed to connect to SMTP server…
 --smtpSocketConnect
ERROR Message sending error:
System.AggregateException: One or more errors occurred. ---> Sitecore.EDS.Core.Exceptions.TransportException: Internal failure.
   at Sitecore.EDS.Core.Net.Smtp.ChilkatTransportClient.SendAsync(Email message)
   at Sitecore.EDS.Core.Net.Smtp.ChilkatMessageTransport.<RetryOnFault>d__10.MoveNext()
ERROR Exception: Sitecore.Modules.EmailCampaign.Exceptions.EmailCampaignException
Message: Failed to connect to the email server. Please try again later.
Source: Sitecore.EmailCampaign
   at Sitecore.Modules.EmailCampaign.SendingManager..ctor(Boolean checkConnection, MessageItem message, Boolean isService, ILogger logger, ISenderManager senderManager, IDispatchManager dispatchManager)
   at Sitecore.Modules.EmailCampaign.SendingManager..ctor(Boolean checkConnection, MessageItem message, Boolean isService, ILogger logger)
   at Sitecore.Modules.EmailCampaign.Core.Dispatch.SendingHelper.SendStandardMessage(String messageId, RecipientId recipientId, Boolean async, ILogger logger)

特定の例外によって送信が一時停止されないようにディスパッチ リトライヤを設定するには、次の解決策をご検討ください。

解決策

  1. ソリューション構成:
    • リトライヤは2つあります。最初のものは初期化送信時に使用され、2番目のものは送信のオペレーション時に使用されます。
    • これらは両方とも、ディスパッチ プロバイダと同じパラメータで管理されます。
    • リトライヤが使用されるたびに、EXMログ ファイルにINFOログ エントリーが追加されます。
    • リトライヤでキャッチされた例外はすべてログファイルに書き込まれます。
    • 試行回数を超えた場合、メッセージは一時停止されます。これは、EXMの仕様通りの挙動です。
    • メッセージが一時停止された場合、メッセージは再試行されません。
  2. リトライヤを追加するには、以下のいずれかの方法をご検討ください: