Qual a real necessidade de colocar o "message.setFrom(new InternetAddress(from));" na classe MailSender, se a configuração do email que irá enviar será do servidor wildfly?
@ApplicationScoped // O CDI vai criar o objeto e o manterá vivo durante todo o contexto da aplicação
public class MailSender {
@Resource(mappedName = "java:/jboss/mail/gmail") // A configuração esta mapeada no standalone do Wildfly
private Session session;
public void send(String from, String to, String subject, String messageBody) {
MimeMessage message = new MimeMessage(session);
try {
message.setRecipients(javax.mail.Message.RecipientType.TO, InternetAddress.parse(to));
message.setFrom(new InternetAddress(from));
message.setSubject(subject);
message.setContent(messageBody, "text/html");
Transport.send(message);
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
}
public class EnviaEmailCompra implements MessageListener { // implementa para receber a mensagem
@Inject
private MailSender mailSender;
@Inject
private CompraDao compraDao;
public void onMessage(Message message) {
try {
TextMessage textMessage = (TextMessage) message; // converte a mensagem em String
Compra compra = compraDao.buscaPorUuid(textMessage.getText());
String messageBody = "Olá " + compra.getUsuario().getNome()
+ ", sua compra foi realizada com sucesso, com o número de pedido: " + compra.getUuid();
mailSender.send("compras@casacodigo.com.br", compra.getUsuario().getEmail(), "Nova Compra na CDC",
messageBody);
} catch (JMSException e) {
e.printStackTrace();
}
}
}