邮件未呈现 html 且格式损坏
mail not rendering html and coming in broken format
我完全不明白这个问题。如果我在 运行 作为 java 应用程序时从 main 方法尝试,那么邮件将以正确的主题和内容格式完美发送。
而当我从 localhost 尝试时,它以损坏的格式出现,例如
------=_Part_0_1765202668.1460463643056 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 7bit
My Content
------=_Part_0_1765202668.1460463643056--
我已经添加了所有相关的 jar(javax.mail)。不管内容是什么,它只会原样出现。这是同一段代码,在主要方法中运行良好,但不适用于本地主机。
有什么想法吗?
一些相关代码
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(this.from));
if ((this.replyTo != null) && (!this.replyTo.equals("")))
msg.setReplyTo(InternetAddress.parse(this.replyTo));
msg.setSentDate(new Date());
InternetAddress[] address = InternetAddress.parse(this.to);
msg.setRecipients(Message.RecipientType.TO, address);
if (this.cc != null) {
InternetAddress[] address1 = InternetAddress.parse(this.cc);
msg.setRecipients(Message.RecipientType.CC, address1);
}
if (this.bcc != null) {
InternetAddress[] address2 = InternetAddress.parse(this.bcc);
msg.setRecipients(Message.RecipientType.BCC, address2);
}
msg.setSubject(this.subject);
Multipart mp = new MimeMultipart();
MimeBodyPart mbp = new MimeBodyPart();
mbp.setContent(this.body,"text/html;charset=utf-8");
mp.addBodyPart(mbp);
if (this.attachfiles != null) {
for (Enumeration e = this.attachfiles.keys(); e.hasMoreElements();) {
String filename = (String) e.nextElement();
mbp = new MimeBodyPart();
FileDataSource fds = new FileDataSource(
(String) this.attachfiles.get(filename));
mbp.setDataHandler(new DataHandler(fds));
mbp.setFileName(filename);
mp.addBodyPart(mbp);
}
}
msg.setContent(mp);
msg.setSentDate(new Date());
Transport.send(msg);
pom.xml 出现问题
结果发现包有冲突。 Tomcat 自动将其自己的 JavaMail 包包含在 Web 项目中的其他两个 Jar 的 Maven 构建中,这导致了问题,而不是从标准 JavaMail jar 导入。
只排除以下jar
<dependency>
<groupId>org.apache.ws.commons.axiom</groupId>
<artifactId>axiom-api</artifactId>
<version>1.2.7</version>
<exclusions>
<exclusion>
<artifactId>geronimo-javamail_1.4_spec</artifactId>
<groupId>org.apache.geronimo.specs</groupId>
</exclusion>
<exclusion>
<artifactId>geronimo-activation_1.1_spec</artifactId>
<groupId>org.apache.geronimo.specs</groupId>
</exclusion>
</exclusions>
</dependency>
我完全不明白这个问题。如果我在 运行 作为 java 应用程序时从 main 方法尝试,那么邮件将以正确的主题和内容格式完美发送。 而当我从 localhost 尝试时,它以损坏的格式出现,例如
------=_Part_0_1765202668.1460463643056 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 7bit
My Content
------=_Part_0_1765202668.1460463643056--
我已经添加了所有相关的 jar(javax.mail)。不管内容是什么,它只会原样出现。这是同一段代码,在主要方法中运行良好,但不适用于本地主机。 有什么想法吗?
一些相关代码
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(this.from));
if ((this.replyTo != null) && (!this.replyTo.equals("")))
msg.setReplyTo(InternetAddress.parse(this.replyTo));
msg.setSentDate(new Date());
InternetAddress[] address = InternetAddress.parse(this.to);
msg.setRecipients(Message.RecipientType.TO, address);
if (this.cc != null) {
InternetAddress[] address1 = InternetAddress.parse(this.cc);
msg.setRecipients(Message.RecipientType.CC, address1);
}
if (this.bcc != null) {
InternetAddress[] address2 = InternetAddress.parse(this.bcc);
msg.setRecipients(Message.RecipientType.BCC, address2);
}
msg.setSubject(this.subject);
Multipart mp = new MimeMultipart();
MimeBodyPart mbp = new MimeBodyPart();
mbp.setContent(this.body,"text/html;charset=utf-8");
mp.addBodyPart(mbp);
if (this.attachfiles != null) {
for (Enumeration e = this.attachfiles.keys(); e.hasMoreElements();) {
String filename = (String) e.nextElement();
mbp = new MimeBodyPart();
FileDataSource fds = new FileDataSource(
(String) this.attachfiles.get(filename));
mbp.setDataHandler(new DataHandler(fds));
mbp.setFileName(filename);
mp.addBodyPart(mbp);
}
}
msg.setContent(mp);
msg.setSentDate(new Date());
Transport.send(msg);
pom.xml 出现问题 结果发现包有冲突。 Tomcat 自动将其自己的 JavaMail 包包含在 Web 项目中的其他两个 Jar 的 Maven 构建中,这导致了问题,而不是从标准 JavaMail jar 导入。
只排除以下jar
<dependency>
<groupId>org.apache.ws.commons.axiom</groupId>
<artifactId>axiom-api</artifactId>
<version>1.2.7</version>
<exclusions>
<exclusion>
<artifactId>geronimo-javamail_1.4_spec</artifactId>
<groupId>org.apache.geronimo.specs</groupId>
</exclusion>
<exclusion>
<artifactId>geronimo-activation_1.1_spec</artifactId>
<groupId>org.apache.geronimo.specs</groupId>
</exclusion>
</exclusions>
</dependency>