Documentazione della configurazione dell'API Java Mail per JNDI in Tomcat
-
28-10-2019 - |
Domanda
Trascorro diversi giorni a capire come configurare un javax.mail.Session in Tomcat tramite JNDI con autenticazione , ora lo capisco ma solo dopo un'immersione profonda nel codice.
In questo periodo ho visto il peggior codice in assoluto: javax.mail.Service # connect (String, String, String, String) Versione 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();
}
Quando viene assegnata la password? e perché viene verificato due volte con null? - e poi rendersi conto che l'altro non appartiene al se sopra. (Questa è la rientranza originale). Torna all'argomento.
Almeno ho scoperto che la definizione di risorsa corretta è:
<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"
/>
Fai attenzione al fatto che è "password" e "mail.smtp.user" o "mail.user" ma non "mail.smtp.password" o "utente".
Almeno la magia viene eseguita in Tomcats org.apache.naming.factory.MailSessionFactory
. Questa factory aggiunge un javax.mail.Authenticator
alla sessione di posta se una proprietà password
e una proprietà mail.smtp.user
o mail.user
escono.
Ora la mia domanda è dove si trova la documentazione per tutta quella roba. Soprattutto sulla configurazione di nome utente e password?
Btw: l'ho spiegato in modo un po 'più dettagliato per aiutare altri come ha lo stesso problema.
Soluzione
La documentazione di Tomcat è limitata ma il codice sorgente è qui: http://javasourcecode.org/html/open-source/tomcat/tomcat-7.0.19/org/apache/naming/factory/MailSessionFactory.java.html
Altri suggerimenti
Questo è semplicemente un bug nella documentazione.Qualcuno ha già sollevato questo problema sul bug tracker di Tomcat
https://bz.apache.org/bugzilla/show_bug.cgi? id= 53665
Ti suggerisco di registrarti e votare per il bug.