0

そのため、当初、私は何千もの受信者に電子メールを送信するマーケティング電子メールアプリケーションをコーディングしていました。私は素朴にこのようなことをしていました:

for(all emails)
{
    HtmlEmail email = new HtmlEmail();
    email.setBody(theHtml);
    email.addTo(currentEmail);
    email.send();
}

上記の問題は、非常に多くの電子メールの後で、ガベージコレクターが起動して、CPUの束を消費する古いHtmlEmailオブジェクトを削除する必要があることです。私は今、以下のようなことをしようとしています:

HtmlEmail email = new HtmlEmail();
email.setBody(theHtml);

for(all emails)
{
    //Option1: Use below line of code but need to remove the previous "current email"; that is, not send this to all the previous recipients AND the new one
    //Line to remove previous email from HtmlEmail object
    email.addTo(currentEmail, currentName);
    //or option 2: email.setTo(new String[]{currentEmail});
}

コメントされていないメソッドの問題は、addToが以前に追加された電子メールアドレスを削除しないことです。私は確かに同じ受信者に同じメールを送りたくありません。非常に非常に悲惨です。したがって、その方法を実行する場合は、前の電子メールを削除する方法が必要になります。こんなことしたい

email.setTo(Arrays.asList(new String[]{}));

これに関する問題は、APIが、含まれているすべての文字列が有効な電子メールアドレスである必要があると述べていることです。そうでない場合、例外がスローされます。もう1つのオプションはemail.setTo毎回使用することですが、受信者の名前を含めることはできません。誰かが上記のいずれかを行う方法を提案できますか?説明が必要な場合は、言葉で表現するのが少し難しいことを理解しています。前もって感謝します。

4

1 に答える 1

1

これは醜いですが、HtmlEmailはgetToAddresses()メソッドで内部リストを公開しているようです。したがって、email.getToAddresses()。clear()は実際にすべての受信者をクリーンアップし、次にaddTo()を再度使用できます。

しかし、これはHtmlEmailクラスの内部に依存しており、これは間違いなく適切なコーディング手法ではありません。

于 2012-09-05T21:49:43.913 に答える