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.
pmlmPJ
Março 27, 2009, 11:47am
#2
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!