Documentación de la configuración de Java Mail API para JNDI en Tomcat
-
28-10-2019 - |
Pregunta
Paso varios días para descubrir cómo configurar una sesión javax.mail.Session en Tomcat a través de JNDI con autenticación, ahora lo entiendo, pero solo después de profundizar en el código.
En este tiempo he visto el peor código jamás visto:javax.mail.Service#connect(Cadena,Cadena,Cadena,Cadena) Versión 1.4.1
if (user == null) {
user = url.getUsername();
if (password == null) // get password too if we need it
password = url.getPassword();
} else {
if (password == null && user.equals(url.getUsername()))
// only get the password if it matches the username
password = url.getPassword();
}
¿Cuándo se asigna la contraseña?¿Y por qué se compara con nulo dos veces?– y luego darse cuenta de que el else no pertenece al if anterior.(Esta es la sangría original).Volver al tema.
Al menos descubrí que la definición correcta de recurso es:
<Resource name="email/session"
type="javax.mail.Session"
auth="Container"
password="secret"
mail.debug="false"
mail.transport.protocol="smtp"
mail.smtp.auth="true"
mail.smtp.user="testi"
mail.smtp.host="smtp.xxx.org"
mail.smtp.from="test@example.com"
/>
Preste atención al hecho de que es "contraseña" y "mail.smtp.user" o "mail.user", pero no "mail.smtp.password" o "usuario".
Al menos la magia se hace en Tomcats org.apache.naming.factory.MailSessionFactory
.Esta fábrica agrega un javax.mail.Authenticator
a la sesión de correo si una propiedad password
y una propiedad mail.smtp.user
o mail.user
salidas.
Ahora mi pregunta es ¿dónde está la documentación para todo eso?¿Especialmente sobre la configuración de nombre de usuario y contraseña?
Por cierto:Lo expliqué un poco más detalladamente para ayudar a otros que tienen el mismo problema.
Solución
La documentación de Tomcat es limitada pero el código fuente está aquí: http://javasourcecode.org/html/open-source/tomcat/tomcat-7.0.19/org/apache/naming/factory/MailSessionFactory.java.html
Otros consejos
Esto es simplemente un error en la documentación.Alguien ya ha planteado esto en el rastreador de errores de Tomcat.
https://bz.apache.org/bugzilla/show_bug.cgi?id=53665
Te sugiero que te registres y votes por el error.