0

我一直在尝试编写一个邮件系统,该系统将数据插入到 xml 模板中,然后重新收集模板以作为邮件发送,这非常有效,但它们是通过 HTML 表发送的问题。如果邮件设置为 text/html 我的表格工作正常但我的 xml 没有,同样适用于我的 xml 工作而我的 html 没有的 text/plain。现在我的电子邮件意味着包含两个带有 html 表格数据的 xml 样式模板。

XML 文件 - 内容

<bodycontent>
   <text1></text1>
   <text2></text2>
   <table1></table1>
   <table2></table2>
</bodycontent>

将数据设置为 XML 元素

eElement.getElementsByTagName("text1").item(0).setTextContent("data1");
            eElement.getElementsByTagName("text2").item(0).setTextContent("data2");
            eElement.getElementsByTagName("table1").item(0).setTextContent("data3");
            eElement.getElementsByTagName("table2").item(0).setTextContent("data4");
            eElement.getElementsByTagName("projectnum").item(0).setTextContent("data5");

从xml获取数据内容

eElement.getElementsByTagName("bodycontent").item(0).getTextContent();

创建邮件传输

Session mailSession = Session.getDefaultInstance(properties);
                    Transport transport = mailSession.getTransport();
                    MimeMessage message = new MimeMessage(mailSession);
                    message.setSubject(rs.getString("emailTitle"));
                    message.setContent(rs.getString("emailContent"), "text/plain");
                    Address[] from = InternetAddress.parse(SMTPMailFrom);
                    message.addFrom(from);
                    message.addRecipient(Message.RecipientType.TO, new InternetAddress(rs.getString("requestEmailAddress"))); //Send email To (Type email ID that you want to send)

                    transport.connect(SMTPMailHost, Integer.parseInt(SMTPMailPort), SMTP_tmp_user, SMTP_tmp_pass);
                    transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO));   
                    transport.close();

电子邮件内容示例

我目前正在将表格作为字符串传递,但这不起作用。我如何转换这个,所以输出是一个解析的 html 表?

Data 3 = "<table border=\"1\"><tr><td> Data 1</td></tr><tr><td> Data 2</td></tr><tr><td> Data 3</td></tr></table>";

如果输出是普通的,则 xml 节点之间的任何间距都会正确显示,但表格仍为字符串样式。

我完全被困在如何解决这个问题上?和想法?

提前谢谢你!

4

1 回答 1

1

对于任何有同样问题或未来的人。

要修复在 java 邮件中包含 html 和 xml,您需要使用 MultiBodyParts MIME*,将数据拆分为纯文本和 html 部分,并使用正文部分内容类型进行区分。

这里有一些研究可以帮助你。

MIME - 子类型

多部分消息。

祝你好运!

于 2013-11-07T09:35:43.823 回答