0

所以最初我正在编写一个营销电子邮件应用程序,它可以向成千上万的收件人发送电子邮件。我天真地做着这样的事情:

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

上面的问题是,在收到这么多邮件之后,垃圾收集器必须启动并删除陈旧的 HtmlEmail 对象,这些对象会占用大量 CPU。我现在正在尝试执行以下操作:

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 声明所有包含的字符串必须是有效的电子邮件地址,否则会引发异常。另一种选择是email.setTo每次都使用,但不能包含收件人姓名。任何人都可以建议一种方法来执行上述操作吗?如果您需要澄清,我知道这有点难以用语言表达。提前致谢。

4

1 回答 1

1

这很难看,但似乎 HtmlEmail 在 getToAddresses() 方法中公开了内部列表。因此,email.getToAddresses().clear() 实际上会清除所有收件人,然后您可以再次使用 addTo()。

但这依赖于 HtmlEmail 类的内部,这绝对不是好的编码实践。

于 2012-09-05T21:49:43.913 回答