API de JavaMail y la implementación de Tomcat 7

Hay varias API de Java EE que existen simplemente como eso: API (interfaces, objetos de dominio, enumeraciones, etc., pero no hay clases reales que hagan cosas). APIs como JPA, JDBC o JTA. Estas APIs deben tener implementaciones; Para JPA hay implementos como Hibernate, MyBatis o TopLink. Para JDBC hay controladores para cada RDBMS específico. Para JTA hay Bitronix y Atomikos.

Pero ¿qué pasa con JavaMail? ¿Es solo una API? Si es así, ¿cuáles son algunas implementaciones comunes de la misma? Si implemento mi aplicación Java (como WAR) en Tomcat 7, ¿de dónde viene esta implementación (específicamente)? ¿Tomcat tiene su propio JavaMail impl? ¿Qué JARs / paquetes / clases componen la implementación de Tomcat?

JavaMail es un estándar JSR 919

El servidor TomEE tiene soporte para JavaMail.

La configuración es muy sencilla y va así.

  1. tomee ya viene con apache-tomee-plus-1.6.0/lib/geronimo-javamail_1.4_mail-1.8.2.jar
  2. en tomee.xml (configurado en $TOMEE/conf ) agrega una entrada como se describe en Configuración de JavaMail
  3. desde dentro de sus clases puede hacer referencia a la sesión de correo a través de @Resource como se describe en el recurso javax.mail.Session y la autenticación smtp