Sample code for 30+ languages & platforms
Java

Add Image to HTML Email

See more Email Object Examples

Demonstrates how to add an image to an HTML email.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.Email;

public class ChilkatExample {

    public static void main(String[] args) {
        // This example requires the Chilkat API to have been previously unlocked.
        // See Global Unlock Sample for sample code.

        Email email = new Email();

        email.setFrom("Matt <matt@example.com>");
        email.addTo("Joe", "joe@example.com");
        email.setSubject("This is a test");

        // Add an HTML body with an image tag.
        String html = "<html><body><p>Test with image:</p><p><img src=\"/wildlife/starfish.jpg\" /></p></body></html>";
        email.setHtmlBody(html);

        // Add the image data from a file.  The pathInHtml must match the value of the img tag's src attribute.
        String pathInHtml = "/wildlife/starfish.jpg";
        // The actual path of the JPG file in the local filesystem:
        String pathOnDisk = "qa_data/jpg/starfish20.jpg";

        try {
            email.addRelatedFile2(pathOnDisk, pathInHtml);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // The email is now properly constructed with an image that will be visible in the HTML.
        // In this example, we'll save it to a .eml file and verify by loading the .eml in an email client such as Mozilla Thunderbird.

        email.saveEml("qa_output/starfish.eml");

        // Also, we can examine the MIME to understand how the image data in the MIME is associated with the img tag in the HTML.
        // It is the Content-Location header value that must match the value of the img tag's src attribute.

        System.out.println(email.getMime());

        // Here's the MIME:

        // MIME-Version: 1.0
        // Date: Thu, 26 May 2022 11:09:12 -0500
        // Message-ID: <B1D499F74F533E287BFE04BBD79AAF1D973B61E3@SLICE>
        // Content-Type: multipart/related; boundary="------------000205040704010904010706"
        // X-Priority: 3 (Normal)
        // From: Matt <matt@example.com>
        // To: Joe <joe@example.com>
        // Subject: This is a test
        //
        // --------------000205040704010904010706
        // Content-Type: text/html; charset=us-ascii
        // Content-Transfer-Encoding: 7bit
        //
        // <html><body><p>Test with image:</p><p><img src="/wildlife/starfish.jpg" /></p></body></html>
        // --------------000205040704010904010706
        // Content-Type: image/jpeg; name="/wildlife/starfish.jpg"
        // Content-Transfer-Encoding: base64
        // Content-Disposition: inline; filename="/wildlife/starfish.jpg"
        // Content-Location: /wildlife/starfish.jpg
        //
        // /9j/4AAQSkZJRgABAQEASABIAAD//gAmRmlsZSB3cml0dGVuIGJ5IEFkb2JlIFBob3Rvc2hvcD8g
        // NC4w/9sAQwAQCwwODAoQDg0OEhEQExgoGhgWFhgxIyUdKDozPTw5Mzg3QEhcTkBEV0U3OFBtUVdf
        // YmdoZz5NcXlwZHhcZWdj/9sAQwEREhIYFRgvGhovY0I4QmNjY2NjY2NjY2NjY2NjY2NjY2NjY2Nj
        // Y2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2Nj/8IAEQgAFAAUAwERAAIRAQMRAf/EABcAAAMBAAAA
        // AAAAAAAAAAAAAAIDBAX/xAAYAQADAQEAAAAAAAAAAAAAAAABAgMEAP/aAAwDAQACEAMQAAAB2kZY
        // NNEijWKddfTmLgALWH//xAAbEAACAgMBAAAAAAAAAAAAAAABAgMRAAQSE//aAAgBAQABBQL0XqN+
        // pM2aqJGMiqFFCyg7z//EABwRAAICAgMAAAAAAAAAAAAAAAERAAIQIQMSUf/aAAgBAwEBPwHqU5aq
        // Axx+y1tMQl4elj//xAAcEQEAAQUBAQAAAAAAAAAAAAABEQACEBIhA1H/2gAIAQIBAT8B3Bhqy7Zc
        // enyiwmGgDhiOzj//xAAdEAABAwUBAAAAAAAAAAAAAAABAAIREBIhIkFR/9oACAEBAAY/ArZyn+Cg
        // xtxWuJaoCnqDuin/xAAcEAABBAMBAAAAAAAAAAAAAAABABEhYRAxQVH/2gAIAQEAAT8hkEwPUUR9
        // DYfE4nxtRpIkBTsayuALIiuY/9oADAMBAAIAAwAAABDWPTsf/8QAGhEAAwADAQAAAAAAAAAAAAAA
        // AAEREDFBIf/aAAgBAwEBPxC0DVPcWm+Ce4OesrkE6bjH/8QAGBEBAQEBAQAAAAAAAAAAAAAAAREA
        // QRD/2gAIAQIBAT8QahMiOc8YgSrnTY3ELclHXn//xAAcEAEBAAIDAQEAAAAAAAAAAAABEQAhMUFx
        // EFH/2gAIAQEAAT8Qn3igmSZSj+c4N4zapMy9IjFV98wncN2iuLFsCEbDGxQkI6RO/n//2Q==
        //
        // --------------000205040704010904010706--
    }
}