我使用 JavaMail 创建了一个应用程序,它读取电子邮件并获取其内容。内容将以 HTML 格式获取。此内容将被分析,然后转发到另一个电子邮件地址。
我已经在 Chrome、Mozilla、Outlook、Office 365、Thunderbird 和 Internet Explorer 中测试了电子邮件的布局。一切都很好,当然,除了 IE。
我制作了一些屏幕截图,一个在 Chrome 中,另一个在 Internet Explorer 中,都来自同一个邮件客户端 (Office 365)。
Chrome 中的好电子邮件
错误的 IE 电子邮件
我整理了multipart
一封电子邮件,一部分用于内容,另一部分用于附件。这是我正在使用的代码:
public void SentTest(String messageContent) throws IOException, ParseException, NoSuchProviderException {
//Only get text between HTML tags
Pattern pattern = Pattern.compile(".*?<html.*?>(.*?)</html>.*?");
Matcher matcher = pattern.matcher(messageContent);
if (matcher.matches()) {
messageContent= matcher.group(1);
}
messageContent= Jsoup.clean(messageContent, Whitelist.relaxed());
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smpt.host", "pod51010.outlook.com");
props.put("mail.smtp.port", "587");
props.put("mail.smtp.starttls.enable", "true");
Session session = Session.getInstance(props, null);
try {
transport = session.getTransport("smtp");
try {
transport.connect("host", "email", "password");
} catch (MessagingException ex) {
ex.printStackTrace();
}
} catch (NoSuchProviderException ex) {
ex.printStackTrace();
}
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("email"));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse("testemail"));
message.setSubject("Test");
MimeBodyPart testMessagePart = new MimeBodyPart();
testMessagePart.setText(inhoudBericht, "ISO-8859-1", "html");
testMessagePart.setHeader("Content-Type", "text/html; charset=\"iso-8859-1\"");
testMessagePart.setHeader("Content-Transfer-Encoding", "quoted-printable");
testMessagePart.setHeader("MIME-Version", "1.0");
Multipart multipart = new MimeMultipart("multipart");
multipart.addBodyPart(testMessagePart);
//Set the content of the Message
message.setHeader("", "");
message.setContent(multipart, "html; charset=\"iso-8859-1\"");
try {
transport.sendMessage(message, message.getAllRecipients());
} catch (Exception ex) {
ex.printStackTrace();
}
transport.close();
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
我的问题是:如何使电子邮件的布局灵活,使其适用于所有浏览器?
编辑
在 HTML 添加<html>
标签和 aDoctype
并删除width
属性后,布局会“正确”显示,但当然还有另一个问题:
如您所见,它现在是蓝色的,并且正在显示表格轮廓。有什么办法摆脱这个吗?
编辑
bgcolor
通过删除标签摆脱了蓝色背景。现在唯一的问题是删除表格轮廓。