Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从Apache HtmlEmail中删除所有收件人地址_Java_Email_Memory_Apache Commons - Fatal编程技术网

Java 从Apache HtmlEmail中删除所有收件人地址

Java 从Apache HtmlEmail中删除所有收件人地址,java,email,memory,apache-commons,Java,Email,Memory,Apache Commons,因此,最初我编写了一个营销电子邮件应用程序,可以向数千名收件人发送电子邮件。我天真地做了这样的事情: for(all emails) { HtmlEmail email = new HtmlEmail(); email.setBody(theHtml); email.addTo(currentEmail); email.send(); } 上面的问题是,在发送了这么多电子邮件之后,垃圾收集器必须启动并删除陈旧的HtmlEmail对象,这会占用大量CPU。我现在正

因此,最初我编写了一个营销电子邮件应用程序,可以向数千名收件人发送电子邮件。我天真地做了这样的事情:

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
,但不能包括收件人姓名。有人能推荐一种方法来完成上述任务吗?如果你需要澄清,我理解用语言表达有点困难。提前感谢。

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


但这依赖于HtmlEmail类的内部结构,这显然不是一个好的编码实践。

嘿,非常感谢您的发现。我看了一眼,你说的没错。当然是奇怪的API。