很明显,通过JavaMail从Java EE应用程序发送电子邮件并不困难。我感兴趣的是最佳模式以接收电子邮件(主要是通知反弹)?我不感兴趣基于IMAP/POP3的方法(轮询收件箱)-我的应用程序应该对入站电子邮件进行响应。
我能想到的一种方法是:
从性能和(感知上的)清洁度的角度来看,我认为第二种方法更好,但它需要我提供一个适当的SMTP传输实现。此外,我不知道是否可能将网络套接字连接到Bean...
你有什么建议吗?你有关于第二种方法的详细信息吗?
我能想到的一种方法是:
- 保留现有的MTA(postfix在我的情况下为linux) -> 运维团队已经知道如何配置/操作它
- 对于每个到达的邮件,生成一个Java应用程序来接收数据并通过JMS发送。我可以通过/etc/aliases中的条目做到这一点,例如
myuser: "|/path/to/javahelper"
,其中javahelper调用Java应用程序,并传递STDIN。 - MDB (Java EE应用程序的一部分)接收JMS消息,解析它,检测反弹消息并相应地处理。
- 在Java EE应用程序容器的端口25上打开一个监听网络套接字。
- 将SessionBean与套接字关联。Bean是Java EE应用程序的一部分,可以直接解析/检测反弹/处理消息。
- 将现有的MTA作为入站中继保留,执行所有安全/垃圾邮件过滤,但将通过过滤器的电子邮件转发到Java EE应用程序容器的端口25上的
myuser
。
从性能和(感知上的)清洁度的角度来看,我认为第二种方法更好,但它需要我提供一个适当的SMTP传输实现。此外,我不知道是否可能将网络套接字连接到Bean...
你有什么建议吗?你有关于第二种方法的详细信息吗?