Quantcast
Channel: GUJ - Tópicos com a tag java
Viewing all articles
Browse latest Browse all 17410

ForEach Java pegando somente o último

$
0
0

@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

Ler tópico completo


Viewing all articles
Browse latest Browse all 17410

Latest Images

Trending Articles

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>