@PaoloSilva escreveu:
Ola pessoal!
Estou com o seguinte problema :
tenho essa interface com esse método :
@Repository public interface EmailRepository extends JpaRepository<Email, Long> { @Query("select e from Email e join fetch e.attachments join fetch e.recipients where e.emailStatus in ?1") public List<Email> getUnsentEmails(List<EmailStatus> emailStatus); }
e a classe que executa essa método esta da seguinte forma :
public void sendEmails() throws MessagingException { MimeMessage mimeMessage = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); List<Email> emails = this.emailRepository.getUnsentEmails(Arrays.asList(EmailStatus.NEW, EmailStatus.ERROR)); emails.forEach(s -> { String[] recipients = s.getRecipients() .stream() .map(String::new) .toArray(String[]::new); try { helper.setText(s.getMessage()); helper.setFrom(sender); helper.setTo(recipients); helper.setSubject(s.getTitle()); helper.setReplyTo(replyTo); for (Attachment attachment : s.getAttachments()) { helper.addAttachment(attachment.getFilename(), new ByteArrayResource(attachment.getData())); } } catch (MessagingException e) { logger.error(e.getMessage(), e); } }); javaMailSender.send(mimeMessage); }
Porem na hora de enviar os emails,mesmo tendo por exemplo 5 emails com status NEW, somente o último é enviado, estou achando que é problema nesses forEach aqui :
for (Attachment attachment : s.getAttachments()) { helper.addAttachment(attachment.getFilename(), new ByteArrayResource(attachment.getData()));
porem não conseguir resolver o mesmo de outra forma. Aqui o getAttchments é Set que foi declarado na classe Email e o getRecipients é um List tambem declarado na classe Email, que no techo é convertida em um Array de String por causa do setTo do JavaMail.
Algum amigo saberia o que poderia esta ocorrendo e me aponta uma solução.
Obrigado
Mensagens: 1
Participantes: 1