Posts match “ email ” tag:

Para enviar emails desde un EJB, tendremos que crear un bean de sessión donde definimos por jndi la configuración del email, a posteriori creamos nuestro message de la clase MimeMessage

@Stateless(name = "EmailEJB")
public class EmailEJB implements EmailRemoteEJB {


@Resource(name = "mail/miMailSession")
private Session mailSession;

@Asynchronous
@Lock(LockType.READ)
    public void sendMail(String recipient, String subject, String msg) {
        try {
                        //En algunos servidores (como wildfly 10) la inyección del Resource no funciona, entonces tendremos que hacer el lookup.
            if (mailSession == null) {
                InitialContext ic = new InitialContext();
                mailSession = (Session) ic.lookup("java:/futuramail");
            }
            MimeMessage message = new MimeMessage(mailSession);
            Address[] to = new InternetAddress[]{new InternetAddress(recipient)};
            message.setRecipients(Message.RecipientType.TO, to);
            message.setSubject(subject);
            message.setSentDate(new Date());
            message.setContent(msg, "text/html"); 

            // No es obligatorio, pero es bueno, indicar quien genera el mensaje
             message.setHeader("X-Mailer", "Mail generado por runando");

            Transport.send(message);
            Logger.getLogger(EmailEJB.class.getName()).log(Level.INFO, null, "Email enviado correctamente.");
        } catch (MessagingException me) {
            //me.printStackTrace();
            Logger.getLogger(EmailEJB.class.getName()).log(Level.SEVERE, null, ex);
        } catch (NamingException ex) {              
            Logger.getLogger(EmailEJB.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

Ahora tendremos que configurar el JNDI Mail Session en nuestro contenedor de aplicaciones (weblogic , wildfly, jboss...)
Entramos en la consola de weblogic:

http://IPWEBLOGIC:port/console

En la opción de Services, subopción Mail Sessions, pulsamos sobre "configurar un email de sesión", siendo los parámetros:

Name: mail/miMailSession
JNDI name: mail/miMailSession
Username: miEmail@company.com
Password:  [password del usuario]
JavaMail Properties:
mail.smtp.starttls.enable=true
mail.smtp.port=587
mail.user=miEmail
mail.smtp.ssl.trust=smtp.company.com
mail.smtp.auth=true
mail.smtp.host=smtp.company.com
mail.smtp.password=[password del usuario]
mail.debug=True
username=miEmail@company.com
mail.from=miEmail@company.com
mail.smtp.user=miEmail@company.com
mail.transport.protocol=smtp

No olvidar seleccionar un servidor de destino al final del procedimiento, para que la sesión esté disponible.

Copyright © 2016 runando