JavaMail base64 encoding

10,601

Solution 1

From the docs:

Q: Even though JavaMail does all the encoding and decoding for me, I need to manually control the encoding for some body parts. A: In the rare case that you need to control the encoding, there are several ways to override JavaMail's default behavior. A simple approach is as follows. After creating the entire message, call msg.saveChanges() and then use something like mbp.setHeader("Content-Transfer-Encoding", "base64") to force base64 encoding for the given body part.

Another approach is to subclass MimeBodyPart and override the updateHeaders method so that it first calls super.updateHeaders() and then sets the Content-Transfer-Encoding header as above.

Solution 2

simply add this statement:

part.setHeader("Content-Transfer-Encoding", "base64");

after the lines of code that set part.setDataHandler(..) or part.setContent(...), and the dataSource/Handler will adapt itself to match the content transfer encoding you just specified for the body part.

You may also want to consider setting the headers by the same token, e.g.:

part.setHeader("Content-Type", "application/octet-stream");
Share:
10,601
ragebiswas
Author by

ragebiswas

Updated on June 04, 2022

Comments

  • ragebiswas
    ragebiswas almost 2 years

    I have some Java code which sends out an email with code somewhat like the following:

    MimeBodyPart part = new MimeBodyPart();
    part.setContent(htmlString, "text/html; charset=\"UTF-8\"");
    part.setHeader("MIME-Version", "1.0");
    part.setHeader("Content-Type", "text/html; charset=\"UTF-8\"");
    part.setHeader("Importance", severityVal);
    
    mimeMultiPart.addBodyPart(htmlPart);
    mimeMessage.setContent(mimeMultiPart);
    

    ... and so on.

    How can I encode the "part" MimeBodyPart in base64 for this outgoing email?

  • joseluisbz
    joseluisbz over 4 years
    I have similar question stackoverflow.com/q/59166613/811293 please tell me about this.