【问题标题】:Tomcat Javamail Port 365?Tomcat Javamail 端口 365?
【发布时间】:2012-11-14 16:48:09
【问题描述】:

我遵循了一个示例,将资源添加到我的 webapp context.xml

<Resource auth="Container" mail.smtp.host="localhost" 
    name="containeremail" type="javax.mail.Session" />

在 web.xml 我有:

<resource-ref>
<description>Container Email resource</description>
<res-ref-name>containeremail</res-ref-name>
<res-type>javax.mail.Session</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>

然后我使用 Javamail 发送这样的电子邮件:

Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");            
mailSession=(Session)envCtx.lookup("containeremail");                                             
mailSession.setDebug(true);


Transport.send(message);

这在我的开发环境中运行良好。

但是,当我在我的生产 CENTOS 盒子中部署时,我得到了这个异常:

javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 365;

嵌套异常是: java.net.ConnectException:连接被拒绝

Postfix 已安装并在两台机器上运行。我什至尝试在 context.xml 中将端口指定为 25:

mail.smtp.port="25"

但即使这样,它仍然有上面提到端口 365 的异常 ????

关于什么是错的任何想法?

谢谢

斯普诺格

【问题讨论】:

    标签: java tomcat tomcat6 jakarta-mail


    【解决方案1】:

    我不知道 Tomcat 在这种情况下是如何创建 javax.mail.Session 实例的,但如果它使用 Session.getDefaultInstance 而不是 Session.getInstance 你可能会得到一个带有其他人配置的 Session,这就是它的原因使用端口 365。

    您总是可以绕过 Tomcat 的资源配置并自己调用 Session.getInstance。

    【讨论】:

    • 好吧,在这种情况下没有调用 Session.getInstance,您可以从上下文中获取会话。
    • 同样版本的 tomcat 在我的 ubuntu 开发机器上自动使用端口 25。
    • 对,我的问题是关于 Tomcat 如何实现从上下文中获取会话。我知道您没有明确地调用它。只有两种方法可以创建 Session 对象,因此一种方法或另一种 Tomcat 必须使用其中一种方法,但不清楚 Tomcat 内部使用的是哪一种。
    猜你喜欢
    • 2012-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    • 2015-12-10
    • 2014-03-26
    • 1970-01-01
    • 2020-09-15
    相关资源
    最近更新 更多