Enviar varios emails

Galera.

Estou usando o Commons Email para enviar emails. Porém preciso enviar certo de uns 200 emails, e pelo o que eu percebi, para cada email ele abre a conexão com o servidor smtp, envia e fecha.

Tem como fazer para que ele abre a conexão, envie todos os emails e só no final feche?

Valeu.

Se for para enviar o mesmo email para várias pessoas, podes adicionar os vários destinatários a TO, a CC ou a BCC.

Não. Não é o mesmo email. Cada email vai ter o nome do cliente do corpo.

bruno, dá uma olhada na api do spring. Na parte de email.

Se tu olhar a interface MailSender há um método que envia vários email.

Olhando a implementação, tu chega nesse método:

protected void doSend(MimeMessage[] mimeMessages, Object[] originalMessages) throws MailException {
	Map failedMessages = new HashMap();
	try {
		Transport transport = getTransport(getSession());
		transport.connect(getHost(), getPort(), getUsername(), getPassword());
		try {
			for (int i = 0; i < mimeMessages.length; i++) {
				MimeMessage mimeMessage = mimeMessages[i];
				try {
					if (mimeMessage.getSentDate() == null) {
						mimeMessage.setSentDate(new Date());
					}
					mimeMessage.saveChanges();
					transport.sendMessage(mimeMessage, mimeMessage.getAllRecipients());
				}
				catch (MessagingException ex) {
					Object original = (originalMessages != null ? originalMessages[i] : mimeMessage);
					failedMessages.put(original, ex);
				}
			}
		}
		finally {
			transport.close();
		}
	}
	catch (AuthenticationFailedException ex) {
		throw new MailAuthenticationException(ex);
	}
	catch (MessagingException ex) {
		throw new MailSendException("Mail server connection failed", ex);
	}
	if (!failedMessages.isEmpty()) {
		throw new MailSendException(failedMessages);
	}
}

Se tu olhar ali, ele cria um Transport, conecta uma vez e então envia as mensagens após!