0

送信したメールが届かない場合、原因を特定するにはどうすればよいですか?

私のアプリは、Apache commons-mail ライブラリを使用して SMTP 経由で電子メールを送信します。テスト目的で、gmail SMTP サーバーを使用しています。(私たちの本番アプリは、ネットワーク上の内部サーバーを使用しています)。

テスト サーバーの 1 つのケースでは、添付ファイル付きの 5 つの電子メールを生成するバッチ ジョブがあります。一部の電子メールは受信され、他の電子メールは送信済みとしてマークされますが、受信トレイには表示されません。どのメールが受信され、どのメールが黙って消えるかというパターンはないようです。

エラーを送信してチェックするコードは次のようになります。

    final Mail mail = ...;
                //The Mail class is our app's mail object, which provides data used to generate the MIME e-mail and record the results.
    final MultiPartEmail email = ...;
    try {
        email.setSentDate(mail.getDateSent());
        email.send();
    }
    catch (EmailException ee) {
        success = false;
        mail.setDateSent(null);

        getLog().error("Mail not sent: ", ee);
        if (ee.getMessage().indexOf("receiver address required") != -1) {
            mail.setErrorMessage(ee.getMessage());
            getLog().error(mail.toString());
        }
    }

デバッガーで、例外がスローされていないことを確認しました。

私の最初の推測は、添付ファイルのサイズが大きすぎるということでした。しかし、gmail はおそらく 25MB の添付ファイルをサポートし、私の最大の添付ファイルは 14.3 MB です。場合によっては、5 通の電子メールのバッチ全体を実行すると、添付ファイルが最も大きい電子メールが通過し、小さい添付ファイルが消えてしまいます。

4

0 に答える 0