是否可以从字符串表示构建Apache HtmlEmail?

时间:2012-05-25 12:57:40

标签: java javamail apache-commons

我正在构建ImageHtmlEmail,以便将给定HTML中的所有图片下载并嵌入到多部分电子邮件中。我需要存储该电子邮件以便稍后发送。

问题是,我可以获得生成的电子邮件文本和内容类型,但我认为没有办法从文本和内容类型构建ImageHtmlEmail。有可能吗?或者我应该使用原始javax.mail进行实际发送?

2 个答案:

答案 0 :(得分:1)

我能够从电子邮件的字符串表示形式中创建javax.mail.internet.MimeMessage(ASCII转储是从gmail下载原始电子邮件的一种方式)。但是,从中构造Email这样的HtmlEmail子类还不是很成功。

MimeMessage mimeMessage  =  MimeMessageUtils.createMimeMessage(Session.getDefaultInstance(new Properties()), new ByteArrayInputStream(oneEmail.toString().getBytes()));

使用getter方法,它确实为我提供了许多我认为有用的东西。

答案 1 :(得分:0)

不确定“从字符串构建HtmlEmail”是什么意思,但构建ImageHtmlMail应该相当容易,请参阅http://commons.apache.org/email/userguide.html上的示例,您需要提供的是通过setHtmlMsg()<的一些html文本/ p>

import org.apache.commons.mail.HtmlEmail;
...

// load your HTML email template
String htmlEmailTemplate = ....

// define you base URL to resolve relative resource locations
URL url = new URL("http://www.apache.org");

// create the email message
HtmlEmail email = new ImageHtmlEmail();
email.setDataSourceResolver(new DataSourceResolverImpl(url));
email.setHostName("mail.myserver.com");
email.addTo("jdoe@somewhere.org", "John Doe");
email.setFrom("me@apache.org", "Me");
email.setSubject("Test email with inline image");

// set the html message
email.setHtmlMsg(htmlEmailTemplate); 

// set the alternative message
email.setTextMsg("Your email client does not support HTML messages");

// send the email
email.send();