sending several emails in a batch
---------------------------------
Key: EMAIL-72
URL: https://issues.apache.org/jira/browse/EMAIL-72
Project: Commons Email
Issue Type: New Feature
Environment: any
Reporter: Hao Zheng
I found when i want to send several emails in one connection, Commons Email
doesn't help. It connects to the SMTP server per email, and it spends more time
on connecting and authentication than sending the mails themselve (most SMTP
server needs authentication). So I have to code on the javamail api directly,
something like:
SMTPSSLTransport strans = (SMTPSSLTransport) sess.getTransport();
strans.connect();
int num = 1000;
for (int i = 0; i < num; i++) {
SMTPMessage email = createMessage(sess, num);
strans.sendMessage(email, email.getAllRecipients());
}
strans.close();
In my straightforward test, it saves me 2/3 of the time. So I think it would be
nice to add this kind of function into Commons Email, to make it more useful.
My suggestion is to extract a cleaner Email bean, which contains all email
dependent information, e.g. TO, CC, Subject, etc, but leaves out all
host/server dependent information, e.g. authenticator, host address, host port,
etc. After that, we can still provide simple convenience method for those who
only want to send one mail every time. And it is possible to add methods like
'addEmail' to add several mails before sending, and later on, when it is called
'send', we can send them in one SMTP connection. It's much like the API of
javamail itself, but we can provide more convenient usage than it. Code will
look like this:
EmailTransmission trans = new EmailTransmission();
trans.setHostName("smtp.myserver.org");
HtmlEmail email1 = new HtmlEmail();
...
HtmlEmail email2 = new HtmlEmail();
...
trans.addEmail(email1);
trans.addEmail(email2);
..
trans.send();
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.