8

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

应用程序用户希望从 Web 应用程序内向下订单的客户发送接收电子邮件通信。电子邮件跟踪必须与订单相关联。

用例是

  1. 用户打开订单详情页面。订单信息。被展示。
  2. 在该页面上 - 单击电子邮件图标,它将显示该订单迄今为止的所有电子邮件通信(发送/接收)。
  3. 对于该订单 - 您可以查看新收到的邮件、回复邮件或向客户发送新邮件 - 所有这些都与该订单相关。

问题:

  1. 发送电子邮件很容易,但如何在应用程序内接收电子邮件?
  2. 这里的电子邮件帐户是什么 - 一个名为 orders@myorg.com 的常见电子邮件帐户(并且基于主题行/某些标题电子邮件被过滤等)或者是 orderid@myorg.com(在这种情况下,新的电子邮件帐户创建是每个订单要求)或?
  3. 我们已经拥有 Microsoft Exchange Server,公司电子邮件通过该服务器传输。我们可以以某种方式利用它还是我们需要设置一个新的邮件服务器?

欢迎任何想法。

4

4 回答 4

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.*'"/>

Wheremail-filter-expression过滤将被刷新的电子邮件receiveChannel。对于所有相关方(频道),您将有一个<int-mail:imap-idle-channel-adapter/>收听您的 Exchange 服务器。

虽然使用起来并不麻烦,但我建议您看一下根据 spring的 EAI和一般EAI 的简短概述

于 2013-04-22T18:20:28.120 回答
3
  1. 接收电子邮件 这是阅读电子邮件的示例代码有没有简单的阅读新 gmail 消息的好短代码示例?

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

  3. Microsoft Exchange Server 使用 exJello 是一个 JavaMail 提供程序 ( http://www.exjello.org/ ) 或使用 JavaMail API 和 DavMail 网关 ( http://davmail.sourceforge.net/ )

于 2013-04-27T17:04:16.427 回答
3

您需要以下内容。

  1. Java Mail API 通过一些交换服务器以编程方式发送电子邮件。
  2. 我建议使用专用的电子邮件服务器来接收特定于应用程序的电子邮件。您可以通过使用James来做到这一点。您可以通过此软件发送和接收电子邮件。
  3. 如果您使用现有的 Microsoft Exchange Server,则始终可以使用重定向到您的应用程序特定的电子邮件服务器。
于 2013-04-20T15:48:52.660 回答
1

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

无论哪种方式都有一个全部,因此所有邮件都会发送到特定的电子邮件,例如 orders@myapp.myorg.com

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

于 2013-04-30T09:51:52.627 回答