:index-group: Unrevised
:jbake-type: page
:jbake-status: status=published
= Javamail API

Este es un ejemplo simple para demostrar un uso muy básico de la API Javamail.
Debería ser suficiente para iniciarse en el uso de los paquetes que maneja java para correo.

== Un servicio REST simple usando la API Javamail

Aquí vemos un endpoint RESTful muy simple que puede ser llamado para enviar un correo. No debería ser complicado modificar la aplicación
para generar otras opciones de configuración adicionales. 

Este ejemplo no enviará ningún correo, pero si se cambian los parámetros para que coincidan con
su servidor de correo; entonces sí se enviará un mensaje.

Puede encontrar información más detallada en:
https://java.net/projects/javamail/pages/Home#Samples[Javamail API]

[source,java]
----
package org.superbiz.rest;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import java.util.Date;
import java.util.Properties;

@Path("/email")
public class EmailService {

    @POST
    public String lowerCase(final String message) {

        try {

            //Create some properties and get the default Session
            final Properties props = new Properties();
            props.put("mail.smtp.host", "your.mailserver.host");
            props.put("mail.debug", "true");

            final Session session = Session.getInstance(props, new Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication("MyUsername", "MyPassword");
                }
            });

            //Set this just to see some internal logging
            session.setDebug(true);

            //Create a message
            final MimeMessage msg = new MimeMessage(session);
            msg.setFrom(new InternetAddress("your@email.address"));
            final InternetAddress[] address = {new InternetAddress("general@email.com")};
            msg.setRecipients(Message.RecipientType.TO, address);
            msg.setSubject("JavaMail API test");
            msg.setSentDate(new Date());
            msg.setText(message, "UTF-8");


            Transport.send(msg);
        } catch (MessagingException e) {
            return "Failed to send message: " + e.getMessage();
        }

        return "Sent";
    }
}
----

== Pruebas

=== Pruebas del servicio JAXRS

La prueba usa el ApplicationComposer de OpenEJB por facilidad.

La idea es primero activar los servicios jaxrs. Esto se hace utilizando la anotación @EnableServices.

Luego creamos la aplicación simplemente retornando un objeto que representa el web.xml. Aquí, simplemente se usa para definir
la raíz del contexto, pero puede usarse para definir la aplicación REST también. Para completar la definición de la aplicación
se puede añadir la anotación @Classes, para definir el conjunto de clases a utilizar en la aplicación.

Finalmente, para hacer pruebas usamos una API cliente cxf para llamar el método post() del servicio REST.

[source,java]
----
package org.superbiz.rest;

import org.apache.cxf.jaxrs.client.WebClient;
import org.apache.openejb.jee.WebApp;
import org.apache.openejb.junit.ApplicationComposer;
import org.apache.openejb.testing.Classes;
import org.apache.openejb.testing.EnableServices;
import org.apache.openejb.testing.Module;
import org.junit.Test;
import org.junit.runner.RunWith;

import java.io.IOException;

import static org.junit.Assert.assertEquals;

@EnableServices(value = "jaxrs")
@RunWith(ApplicationComposer.class)
public class EmailServiceTest {

    @Module
    @Classes(EmailService.class)
    public WebApp app() {
        return new WebApp().contextRoot("test");
    }

    @Test
    public void post() throws IOException {
        final String message = WebClient.create("http://localhost:4204").path("/test/email/").post("Hello General", String.class);
        assertEquals("Failed to send message: Unknown SMTP host: your.mailserver.host", message);
    }
}
----

#Ejecución

Correr el ejemplo es bastante simple.  En el directorio "javamail-api" ejecute:

[source,java]
----
$ mvn clean install
----

Lo cual debería crear una salida como la siguiente:

[source,java]
----
INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
INFO - Creating TransactionManager(id=Default Transaction Manager)
INFO - Creating SecurityService(id=Default Security Service)
INFO - Initializing network services
INFO - Creating ServerService(id=cxf-rs)
INFO - Creating ServerService(id=httpejbd)
INFO - Created ServicePool 'httpejbd' with (10) core threads, limited to (200) threads with a queue of (9)
INFO - Initializing network services
INFO -   ** Bound Services **
INFO -   NAME                 IP              PORT
INFO -   httpejbd             127.0.0.1       4204
INFO - -------
INFO - Ready!
INFO - Configuring enterprise application: D:\github\tomee\examples\javamail\EmailServiceTest
INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
INFO - Auto-creating a container for bean org.superbiz.rest.EmailServiceTest: Container(type=MANAGED, id=Default Managed Container)
INFO - Creating Container(id=Default Managed Container)
INFO - Using directory D:\windows\tmp for stateful session passivation
INFO - Configuring Service(id=comp/DefaultManagedExecutorService, type=Resource, provider-id=Default Executor Service)
INFO - Auto-creating a Resource with id 'comp/DefaultManagedExecutorService' of type 'javax.enterprise.concurrent.ManagedExecutorService for 'test'.
INFO - Configuring Service(id=comp/DefaultManagedScheduledExecutorService, type=Resource, provider-id=Default Scheduled Executor Service)
INFO - Auto-creating a Resource with id 'comp/DefaultManagedScheduledExecutorService' of type 'javax.enterprise.concurrent.ManagedScheduledExecutorService for 'test'.
INFO - Configuring Service(id=comp/DefaultManagedThreadFactory, type=Resource, provider-id=Default Managed Thread Factory)
INFO - Auto-creating a Resource with id 'comp/DefaultManagedThreadFactory' of type 'javax.enterprise.concurrent.ManagedThreadFactory for 'test'.
INFO - Enterprise application "D:\github\tomee\examples\javamail\EmailServiceTest" loaded.
INFO - Creating dedicated application classloader for EmailServiceTest
INFO - Assembling app: D:\github\tomee\examples\javamail\EmailServiceTest
INFO - Using providers:
INFO -      org.apache.johnzon.jaxrs.JohnzonProvider@2687f956
INFO -      org.apache.cxf.jaxrs.provider.JAXBElementProvider@1ded7b14
INFO -      org.apache.johnzon.jaxrs.JsrProvider@29be7749
INFO -      org.apache.johnzon.jaxrs.WadlDocumentMessageBodyWriter@5f84abe8
INFO -      org.apache.openejb.server.cxf.rs.EJBAccessExceptionMapper@4650a407
INFO -      org.apache.cxf.jaxrs.validation.ValidationExceptionMapper@30135202
INFO - REST Application: http://127.0.0.1:4204/test/       -> org.apache.openejb.server.rest.InternalApplication
INFO -      Service URI: http://127.0.0.1:4204/test/email  -> Pojo org.superbiz.rest.EmailService
INFO -              POST http://127.0.0.1:4204/test/email/ ->      String lowerCase(String)
INFO - Deployed Application(path=D:\github\tomee\examples\javamail\EmailServiceTest)
DEBUG: JavaMail version 1.4ea
DEBUG: java.io.FileNotFoundException: D:\java\jdk8\jre\lib\javamail.providers (The system cannot find the file specified)
DEBUG: !anyLoaded
DEBUG: not loading resource: /META-INF/javamail.providers
DEBUG: successfully loaded resource: /META-INF/javamail.default.providers
DEBUG: Tables of loaded providers
DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc]}
DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]}
DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map
DEBUG: !anyLoaded
DEBUG: not loading resource: /META-INF/javamail.address.map
DEBUG: java.io.FileNotFoundException: D:\java\jdk8\jre\lib\javamail.address.map (The system cannot find the file specified)
DEBUG: setDebug: JavaMail version 1.4ea
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth false
DEBUG SMTP: trying to connect to host "your.mailserver.host", port 25, isSSL false
INFO - Undeploying app: D:\github\tomee\examples\javamail\EmailServiceTest
INFO - Stopping network services
INFO - Stopping server services
----
