2011-10-30 162 views
0

我的數據庫中有一組聯繫人。我希望我的應用程序爲我的客戶構建自定義電子郵件模板。使用Java通過郵件合併使用Outlook發送電子郵件

我的客戶端可以設置自定義的佔位符,如公司名稱,地址:

例如:模板設置

Dear <<name>>, 

This is to inform you that our <<company name>>, located in <<address>> ... 

Sincerely, 
<<sender>> 

後,我就可以用這個作爲一個整體給我的電子郵件。然後從數據庫中提取收件人。

我知道java.awt.Desktop包允許我創建一個MAIL URI並使用用戶的默認電子郵件客戶端打開它。問題是如何將郵件合併納入它?你能請指導我現有的圖書館或解決方案嗎?

+1

在Swing中執行此操作的方式與從AWT應用程序,命令行或servlet執行的操作相同。或者換一種說法,[tag:swing]標籤與問題無關,已被刪除。 –

回答

0

使用JavaMail庫發送郵件。如果您搜索「JavaMail示例」,您會發現很多示例:Sending email via Gmail SMTP example。關於佔位符,我只需使用String.replace函數。

+0

我也想過String.replace函數,但如果我有多個收件人?我希望它被髮送,以便每個名稱將被每個收件人的名稱替換。我不能用每個收件人的用戶默認客戶端的另一個實例來打開它。順便說一句,它是在電子郵件客戶端打開它的先決條件,所以我不能這樣做通過Gmail SMTP發送。 – jamesv

+0

@jamesv如果您有多個收件人,則發送多封電子郵件。您絕對不必在電子郵件客戶端中打開郵件以發送郵件。看看我鏈接的JavaMail示例,它與電子郵件客戶端應用程序無關。 –

+0

嗨,這是在電子郵件客戶端打開它的先決條件,因爲這是我的客戶想要的。我只想知道在這之前是否有解決方案,我會告訴他這是不可能的。 – jamesv

0
  1. 您將需要控制如何設置模板中的變量。我不認爲你可以解析任意字符串,並找出它是否有變量。因此,當一個用戶添加一個變量時,確保你插入一個你的程序將會理解的變量到電子郵件正文中。這是一個沒有道理,但認爲我會添加它的完整性。

  2. 您可以將電子郵件正文保存爲速度模板,確保您添加了我們的速度模板語言兼容的變量。如果正在設置複雜的模板,Velocity會比string.replace()更容易。如果它是一個簡單的String.replace()會做。 http://velocity.apache.org/

  3. 接下來使用java郵件庫直接從您的Java程序發送它,或使用Desktop類啓動該框的默認電子郵件客戶端。

編輯:

如果你想打開Outlook,那麼你將需要使用Desktop.mail()API。通過構建適當的URI,並把它傳遞給Desktop.mail()

mailto:[email protected]?SUBJECT=Happy New Year!&BODY=Happy New Year, Duke! 

看看這裏獲取更多信息,您可以預填充在Outlook發送電子郵件窗口,抄送,密送,主題和正文字段: http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/desktop_api/

對於多個收件人,應使用逗號分隔電子郵件地址。如果沒有,請用分號嘗試。 Outlook使用分號。

+0

嗨,這是在Outlook或任何默認的電子郵件客戶端打開它或說只是Outlook的先決條件。問題是如果郵件有多個收件人;如何在一封電子郵件中將所有「名稱」佔位符替換爲收件人的姓名?其他佔位符可能不成問題。 – jamesv

相關問題