0

我正在使用带有 JBoss Seam 的 Jetty 7,并配置了 2 个 Java 邮件会话,一个用于支持通知,另一个用于一般通知。

我遇到的问题似乎来自 JBoss Seam / JSF 在发送电子邮件之前无法将我在事件上下文中设置的会话解析为正确的 Java 邮件会话。

由于它无法解析会话,因此它默认为端口 25 上的 localhost。奇怪的是,我使用与以前相同的代码来设置会话,我现在只是从 JNDI 获取它,而不是从 Seam 组件获取。

我猜测问题出在从 JNDI 获取 Session 并且某些东西没有被正确代理。

大多数地方如何在 Web 应用程序中设置电子邮件通知,您是否经常支持超过 1 个,如果是,您的配置是什么样的?

沃尔特

4

2 回答 2

0

您是否尝试过(来自文档):

<Configure id='wac' class="org.mortbay.jetty.webapp.WebAppContext">
...
<New id="mail" class="org.mortbay.jetty.plus.naming.Resource">
     <Arg><Ref id="wac"/></Arg>
     <Arg>mail/Session</Arg>
     <Arg>
       <New class="org.mortbay.naming.factories.MailSessionReference">
         <Set name="user">fred</Set>
         <Set name="password">OBF:1xmk1w261z0f1w1c1xmq</Set>
         <Set name="properties">
           <New class="java.util.Properties">
             <Put name="mail.smtp.host">XXX</Put>
             <Put name="mail.from">me@me</Put>
             <Put name="mail.debug">true</Put>
           </New>
          </Set>
       </New>
     </Arg>
</New>
</Configure>
于 2009-11-26T14:10:21.950 回答
0

嗯,问题出在我的模块和 JBoss Seam 之间。同样,我正在做一些非标准的事情(比如在应用程序中使用多个电子邮件地址,并根据发件人地址动态分配邮件会话)。

基本上发生的事情是我解析了发件人地址的电子邮件,然后使用它在 JNDI 中查找邮件会话。通过该邮件会话,我将其设置在活动事件上下文中,然后 JBoss Seam 自动在电子邮件中查找“会话”值绑定:

...

我有几个问题,mailSessionGoesHere 不能被命名为 session。出于某种奇怪的原因,这与另一个组件冲突。此外,因为我是异步发送电子邮件,它有自己的事件上下文,这意味着,我需要将它传递到映射中,而不是直接在用于触发电子邮件的事件上下文中设置它。

一旦我整理好所有这些,我现在可以从我选择的任何地址发送电子邮件,只要它在 web.xml、jetty-env.xml 和电子邮件模板中设置即可。

沃尔特

于 2009-12-28T13:53:35.510 回答