Paso varios días para descubrir cómo configurar una javax.mail.Session en Tomcat a través de JNDI con autenticación, ahora lo consigo, pero solo después de una inmersión profunda en el código.Documentación de la configuración de Java Mail API para JNDI en Tomcat
En este tiempo he visto lo peor de código nunca: javax.mail.Service # Connect Versión (String, String, String, String) 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();
}
Cuando se asigna la contraseña ? y ¿por qué se compara con null dos veces? - y luego darse cuenta de que el otro no pertenece al si anterior. (Esta es la sangría original). Regresar al tema
Al menos me encontré con que la definición del recurso es correcta: la atención
<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="[email protected]"
/>
pago 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 realiza en Tomcats org.apache.naming.factory.MailSessionFactory
. Esta fábrica agrega un javax.mail.Authenticator
a la sesión de correo si sale una propiedad password
y una propiedad mail.smtp.user
o mail.user
.
Ahora mi pregunta es dónde está la documentación para todas esas cosas. ¿Especialmente sobre la configuración de nombre de usuario y contraseña?
Btw: Lo he explicado un poco más detalladamente para ayudar a los demás a que tengan el mismo problema.
Se ha informado un problema en agosto de 2012 para esto en https://issues.apache.org/bugzilla/show_bug.cgi?id=53665 –
Diría que el 'else' final debería haberse eliminado. Sobre todo este tipo de cosas se debe a la evolución del código durante largos períodos de tiempo. – EJP