Documentação da configuração da API do Java Mail para JNDI no Tomcat

Passei vários dias tentando descobrir como configurar um javax.mail.Session no Tomcat via JNDI com autenticação , agora eu entendi, mas só depois de um mergulhe fundo no código.

Neste tempo, eu vi o pior código de todos: javax.mail.Service # connect (String, String, String, String) Versão 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 a senha é atribuída? e por que é verificado em relação a null duas vezes? - e então perceber que o else não pertence ao if acima. (Este é o recuo original). Voltar ao tópico.

Pelo menos eu descobri que a definição de recurso correta é:

<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 atenção ao fato de que é „senha“ e „mail.smtp.user“ ou „mail.user“ mas não „mail .smtp.password “ou“ usuário ”.

Pelo menos a mágica é feita em Tomcats org.apache.naming.factory.MailSessionFactory . Esta fábrica adiciona um javax.mail.Authenticator à sessão de e-mail se uma propriedade senha e uma propriedade mail.smtp.user ou mail.user sai.

Agora, minha pergunta é onde está a documentação para todas essas coisas. Especialmente sobre configuração de nome de usuário e senha?

A propósito: expliquei um pouco mais detalhadamente para ajudar outros como tem o mesmo problema.

8
задан Ralph 15 October 2012 в 06:02
поделиться