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?
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.
B
bruno.fantinPJ
Não. Não é o mesmo email. Cada email vai ter o nome do cliente do corpo.
F
fabiofalciPJ
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:
protectedvoiddoSend(MimeMessage[]mimeMessages,Object[]originalMessages)throwsMailException{MapfailedMessages=newHashMap();try{Transporttransport=getTransport(getSession());transport.connect(getHost(),getPort(),getUsername(),getPassword());try{for(inti=0;i<mimeMessages.length;i++){MimeMessagemimeMessage=mimeMessages[i];try{if(mimeMessage.getSentDate()==null){mimeMessage.setSentDate(newDate());}mimeMessage.saveChanges();transport.sendMessage(mimeMessage,mimeMessage.getAllRecipients());}catch(MessagingExceptionex){Objectoriginal=(originalMessages!=null?originalMessages[i]:mimeMessage);failedMessages.put(original,ex);}}}finally{transport.close();}}catch(AuthenticationFailedExceptionex){thrownewMailAuthenticationException(ex);}catch(MessagingExceptionex){thrownewMailSendException("Mail server connection failed",ex);}if(!failedMessages.isEmpty()){thrownewMailSendException(failedMessages);}}
Se tu olhar ali, ele cria um Transport, conecta uma vez e então envia as mensagens após!