Java邮件:附加html内容以及附件

时间:2018-04-18 12:31:45

标签: java email

我正在尝试发送带附件的邮件以及html内容。 我知道如何单独发送html内容和附件,但是可以同时发送html和附件吗?

这是我尝试过的:

public static void sendAttachment(final String to, final String cc, final String subject, final String text,
            final byte[] attachment, final String fileName) {

    if (null == to) {
        return;
    }

    try {
        Properties props = getProperties();
        Session session = Session.getDefaultInstance(props);
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(FROM_EMPRIS));
        message.setRecipients(RecipientType.TO, InternetAddress.parse(to));
        if(null != cc)
            message.addRecipient(RecipientType.CC, new InternetAddress(cc));
        if (null != subject)
            message.setSubject(subject);

        BodyPart messageBodyPart1 = new MimeBodyPart();
        messageBodyPart1.setText(text);

        BodyPart messageBodyPart2 = new MimeBodyPart();
        DataSource ds = new ByteArrayDataSource(attachment, "application/x-any");
        messageBodyPart2.setDataHandler(new DataHandler(ds));
        messageBodyPart2.setFileName(fileName);
        Multipart multiPart = new MimeMultipart();
        multiPart.addBodyPart(messageBodyPart1);
        multiPart.addBodyPart(messageBodyPart2);

        message.setContent(multiPart);

        Transport.send(message);

    } catch (AddressException e) {
                    e.printStackTrace();
    } catch (MessagingException e) {
                    e.printStackTrace();
    } catch (Exception e) {
                    e.printStackTrace();
    }
}

这个将附件和setText(文本)作为明文发送。这可以改为html内容而不是明文吗? 非常感谢您的帮助和非常感谢。

3 个答案:

答案 0 :(得分:2)

只需使用html内容和mimeBodyPart创建另一个setContent(htmlContent, "text/html")。在纯文本正文部分之后添加。

答案 1 :(得分:0)

使用以下方法并在正文中设置html内容

message.setContent(身体, “text / html的”);

答案 2 :(得分:0)

为messageBodyPart1设置DataHandler

BodyPart messageBodyPart1 = new MimeBodyPart();
messageBodyPart1.setText(text);
messageBodyPart1.setDataHandler(new DataHandler(textHtml, "text/html;charset=utf-8"));// this is to handle html