0

リソースを 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を参照する上記の例外がまだあります????

何が間違っているかについてのアイデアはありますか?

ありがとう

スプノグ

4

1 に答える 1

0

この場合、Tomcat がどのように javax.mail.Session インスタンスを作成しているかはわかりませんが、Session.getInstance の代わりに Session.getDefaultInstance を使用している場合、他の誰かの構成でセッションを取得している可能性があります。これが、ポート 365 を使用している理由です。 .

Tomcat のリソース構成をいつでもバイパスして、自分で Session.getInstance を呼び出すことができます。

于 2012-11-14T18:14:15.473 に答える