Aravind S
Aravind S

Reputation: 535

Java mail : attach html content along with an attachment

I'm trying to send a mail with an attachment and also along with a html content. I know how to send the html content and the attachments separately but is it possible to send the both the html and as well as the attachment together?

Here's what I've tried :

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();
    }
}

This one sends the attachment and the setText(text) as a plaintext. Can this be changed to a html content instead of a plaintext? Would greatly appreciate your help and thanks a lot.

Upvotes: 0

Views: 578

Answers (3)

buddha
buddha

Reputation: 833

Set DataHandler for messageBodyPart1

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

Upvotes: 0

Uzair
Uzair

Reputation: 469

Use below method and set html content in body

message.setContent(body,"text/html");

Upvotes: 0

Siraj K
Siraj K

Reputation: 178

Just create another mimeBodyPart with html content and setContent(htmlContent, "text/html"). Add that after your plain text body part.

Upvotes: 2

Related Questions