Tomcat中JNDI的Java邮件API配置文档

Tomcat中JNDI的Java邮件API配置文档,java,tomcat,jndi,jakarta-mail,Java,Tomcat,Jndi,Jakarta Mail,我花了几天的时间研究如何在Tomcat中通过JNDI和身份验证配置javax.mail.Session,现在我得到了它,但只是在深入研究代码之后 在这段时间里,我看到了有史以来最糟糕的代码:javax.mail.Service#connect(String,String,String,String)版本1.4.1 什么时候分配密码?为什么要对null进行两次检查?-然后意识到else不属于上述if。(这是原始缩进)。回到话题上来 至少我发现正确的资源定义是: <Resource name=

我花了几天的时间研究如何在Tomcat中通过JNDI和身份验证配置javax.mail.Session,现在我得到了它,但只是在深入研究代码之后

在这段时间里,我看到了有史以来最糟糕的代码:javax.mail.Service#connect(String,String,String,String)版本1.4.1

什么时候分配密码?为什么要对null进行两次检查?-然后意识到else不属于上述if。(这是原始缩进)。回到话题上来

至少我发现正确的资源定义是:

<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"       
    />

请注意,它是“密码”和“mail.smtp.user”或“mail.user”,而不是“mail.smtp.password”或“user”

至少在Tomcats
org.apache.naming.factory.MailSessionFactory
中实现了这一神奇。如果属性
password
和属性
mail.smtp.user
mail.user
退出,则此工厂会向邮件会话添加一个
javax.mail.Authenticator

现在我的问题是所有这些东西的文档在哪里。特别是关于用户名和密码的配置?


顺便说一句:我解释得更详细一些,以帮助其他人解决同样的问题。

Tomcat文档有限,但源代码在这里:

这只是文档中的一个bug。有人已经在Tomcat bug追踪器上提出了这个问题


我建议您注册并投票支持bug。

是的,我知道。我的问题我已经指出了magic可以使用哪些类。--但是我会接受答案,因为第一部分(“Tomcat文档有限”)--这似乎是唯一正确的答案。仅供参考,Tomcat文档已经更新。更改将在7.0.42之后进行:2012年8月有一个关于此的问题报告,我想说最终的“else”应该已经删除。这种情况主要是由于长时间的代码演化。
<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"       
    />