java - 邮件未呈现 html 并且格式损坏

标签 java jakarta-mail mime

我根本不明白这个问题。如果我在作为 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 自动在 Maven 构建中包含来自 Web 项目中其他两个 Jars 的自己的 JavaMail 包,这会导致问题,而不是从标准 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 - 邮件未呈现 html 并且格式损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36573417/

相关文章:

java - BIRT 获取报告中所需参数的列表

java - Spring Boot 2 MySQL JPA 抛出 : Error accessing column metadata while accessing existing database

javax.mail.MessagingException : Could not connect to SMTP host

php - 通过 PHP 获取 MIME 类型

mime - 在字段正文的开头折叠 MIME header 是否有效?

java - Android 非静态 block 中的 init 方法

java - 使用 lambda 表达式处理异常

java - 如何使用Java读取电子邮件中的 Logo 和图像,其中电子邮件的内容是html/纯文本

java - 如何在 Java 中发送只有发件人和收件人以及主题和消息的邮件?

email - 电子邮件标题 : MIME-Version: 1. 0 - 什么时候使用?