2013-04-20 141 views
8

我有一个订单管理(Web)应用程序(使用Java/Java EE)。从Web应用程序内部发送/接收电子邮件?

用户希望发送接收电子邮件通信谁下订单,从网络应用程序中的客户应用程序。电子邮件跟踪必须与订单关联。

用例是

  1. 用户打开订单详细信息页面。订单信息。被展示。
  2. 在该页面 - 点击次数上的电子邮件图标,它会显示所有的电子邮件通讯(发送/接收),该订单直到日期。
  3. 该订单 - 您可以看到新传入邮件,回复邮件或发送邮件新的客户 - 所有与该订单。

问题:

  1. 向用户发送电子邮件很容易,但如何在应用程序中接收电子邮件?
  2. 什么是这里的电子邮件帐户 - 叫做[email protected](基于主题行/一些头邮件过滤等)或普通的电子邮件帐户它[email protected](在这种情况下,新电子邮件acct创建需要每个订单)或?
  3. 我们已经有公司邮件通过的Microsoft Exchange Server。我们是否可以利用这一点,或者我们是否需要建立一个新的邮件服务器?

任何想法都欢迎。

回答

3

您需要以下信息。

  1. Java邮件API以编程方式通过某些交换服务器发送电子邮件。
  2. 我建议使用专用的电子邮件服务器来接收特定于应用程序的电子邮件。你可以使用James来做到这一点。您可以通过该软件发送和接收电子邮件。
  3. 如果您使用现有的Microsoft Exchange Server,则始终可以使用重定向到您的应用程序特定电子邮件服务器。
+0

Indoknight>我所有的组织电子邮件(形式为“[email protected]”)都由现有的Exchange Server(用于“@ myorg.com”电子邮件)回顾。如果我还必须使用“@ myorg.com”,我想我不能使用新的/单独的电子邮件服务器。 – Jasper 2013-04-20 17:19:10

+0

@Jasper没问题,你仍然可以使用Java邮件API。我刚刚发现了这篇文章1)http://www.javatpoint.com/example-of-receiving-email-using-java-mail-api 2)http://metoojava.wordpress.com/2010/03/21/java-code-to-receive-mail-using-javamailapi/ – IndoKnight 2013-04-20 21:21:30

+0

IndoKnight>谢谢。因此,也许我会有一个像[email protected]这样的电子邮件ID,通过它发送所有订单电子邮件/ recvd。我的appln用户只需要查看与他们正在查看的特定订单ID相关的电子邮件。我可以在主题行中输入订单ID,并根据此ID进行过滤 - 但是有其他方式的想法? – Jasper 2013-04-22 05:36:02

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

3
  1. 接收电子邮件 下面是示例代码来这里阅读电子邮件Are there any good short code examples that simply read a new gmail message?

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

  3. 的Microsoft Exchange Server 二者必选其一exJello是JavaMail的提供者(http://www.exjello.org/) 或使用JavaMail API与DavMail网关(http://davmail.sourceforge.net/

1

从用户的角度来看我觉得保持一个特定的主题是更加困难。我建议像myapp.myorg.com或像一个新的域的子域名myapp.com

无论哪种方式都包罗万象,让所有邮件到一个特定的电子邮件像[email protected]

然后你的脚本可以检查真实的TO。这可能更自然,更酷 - >每个订单都有自己的邮件ID!除此之外,使用James或其他邮件软件来获得交付给你的代码。

+0

如果你需要看到一个活的例子,可以在x10hosting上做一个帐户(谷歌它,他们有自己的域的子域的自由计划)在他们的控制面板/邮件可以配置一个捕获所有 – tgkprog 2013-04-30 09:53:50

+0

但我会说一个百万份订单,我无法承担创建这么多邮件ID ...太动态,因为新订单不断创建在我的系统中。 – Jasper 2013-05-01 05:54:02

+0

你不需要创建任何。它是一个捕获所有,也就是说,如果电子邮件帐户不存在,则发送邮件到[email protected],然后将其路由到默认电子邮件帐户(可能是该域的一部分或另一个域的一部分)(例如default_myapp @ gmail。 com)见http://en.wikipedia.org/wiki/Catch-all | cpanel如何http://www.siteground.com/tutorials/email/catch_all_email.htm – tgkprog 2013-05-01 07:34:29

相关问题