2011-10-30 75 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

相关问题