2013-04-20 137 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

相關問題