从Web应用程序中发送/接收电子邮件?

时间:2013-04-20 15:31:50

标签: java email java-ee web-applications smtp

我有一个订单管理(Web)应用程序(在Java / Java EE中)。

应用程序用户希望从Web应用程序中向发出订单的客户发送接收电子邮件通信。电子邮件路径必须与订单相关联。

用例

  1. 用户打开订单明细页面。订单信息显示。
  2. 在该页面上 - 点击电子邮件图标,它将显示该订单的所有电子邮件通信(已发送/已接收)直至日期。
  3. 对于该订单 - 您可以查看新收到的邮件,回复邮件或向客户发送新邮件 - 所有这些邮件都与该订单相关。
  4. 问题:

    1. 发送电子邮件很简单,但如何在应用内接收电子邮件?
    2. 这里的电子邮件帐户是什么 - 一个名为orders@myorg.com的常见电子邮件帐户(并根据主题行/某些标题电子邮件进行过滤等)或者是orderid@myorg.com(在这种情况下是新邮件) acct创建是每个订单需要的)或?
    3. 我们已经有Microsoft Exchange Server通过哪个公司电子邮件旅行。我们可以在某种程度上利用它,还是我们需要设置一个新的邮件服务器?
    4. 欢迎任何想法。

4 个答案:

答案 0 :(得分:5)

如果您愿意接受依赖关系,Spring Integration可以在轮询(POP3,IMAP)或事件驱动的基础上(IMAP-IDLE)轻松地从指定服务器读取电子邮件。 [1& 3]

[2] 您可以使用专用邮件帐户,并根据传入邮件的主题(或其他字段)过滤发送到下游频道的邮件。 Spring网站的以下片段说明了这一点:

   <int-mail:imap-idle-channel-adapter id="customAdapter"
store-uri="imaps://some_google_address:${password}@imap.gmail.com/INBOX"
channel="receiveChannel"    
should-mark-messages-as-read="true"
java-mail-properties="javaMailProperties"
mail-filter-expression="subject matches '(?i).*Spring Integration.*'"/>

mail-filter-expression在哪里过滤将被清除receiveChannel的电子邮件。对于所有感兴趣的人(频道),您将有一个<int-mail:imap-idle-channel-adapter/>收听您的Exchange服务器。

虽然使用起来并不麻烦,但我建议您查看short overview of EAI according to springof EAI in general

答案 1 :(得分:3)

您需要以下内容。

  1. Java Mail API,以编程方式通过某个Exchange服务器发送电子邮件。
  2. 我建议使用专用的电子邮件服务器来接收特定于应用程序的电子邮件。您可以使用James执行此操作。您可以通过此软件发送和接收电子邮件。
  3. 如果您使用现有的Microsoft Exchange Server,则始终可以使用重定向到特定于应用程序的电子邮件服务器。

答案 2 :(得分:3)

  1. 接收电子邮件 以下是阅读电子邮件Are there any good short code examples that simply read a new gmail message?

  2. 的示例代码
  3. 此处有电子邮件帐户 为每个用户创建一个电子邮件帐户,并将用户的Web应用程序凭据用作电子邮件的凭据。 使用散列订单ID作为主题的一部分,以将每个电子邮件链与特定订单相关联。

  4. Microsoft Exchange Server 使用exJello是JavaMail提供程序(http://www.exjello.org/) 或者将JavaMail API与DavMail Gateway(http://davmail.sourceforge.net/

  5. 一起使用

答案 3 :(得分:1)

从用户的角度来看,我认为保留特定主题更加困难。我会建议像myapp.myorg.com这样的子域名或像myapp.com这样的新域名

任何一种方式都可以捕获所有邮件,以便所有邮件都转到特定的电子邮件,例如orders@myapp.myorg.com

然后你的脚本可以检查真正的TO。这可能更自然,更“酷” - &gt;每个订单都有自己的邮件ID!最重要的是使用James或其他邮件软件来交付您的代码。