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