How about something like this (outline only, off the top of my head)
If you want to send the same message to all recipients
then simply.
...
Transport transport = session.getTransport(TRANSPORT);
//set up session
//set up message
MimeMessage message = new MimeMessage(session);
...
//for each recipient
message.addRecipient(
Message.RecipientType.TO, toAddress); //or CC, BCC
...
Transport transport = session.getTransport("smtp");
transport.connect(HOST, USERNAME, PASSWORD);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
wrap it in a thread if you don't want the main to block
If you want to send a different message to each recipient then something
like
class MailMachine implements Runnable{
EmailAddressServer eas;
EmailMessageServer ems;
...
List<String> emailAddresses = eas.getAddresses();
...
//set up mail session
Session session = Session.getInstance(properties);
...
public void run(){
for(String email: emailAddresses){
MimeMessage message = new MimeMessage(session);
String msg = ems.getMessage(email); //whatever
//blocking IO
...
Transport.send(message);
...
}
}
}
public class Foo{
main(){
// do stuff
...
MailMachine mm = new MailMachine();
Thread t = new Thread(mm);
t.start();
...
//do more stuff
}
}
--
Lipska the Kat©: Troll hunter, sandbox destroyer
and farscape dreamer of Aeryn Sun
GNU/Linux user #560883 -
http://www.linuxcounter.net