HTML로 <img> 태그 써서 외부에 있는 이미 파일 링크거는거야.. 별거 아니고 그냥 html만 문자열로 잘 그리면 되는거죠. 그런데, 그런 절대경로로 이미지 참조하는거 말고, 이미지 파일을 동봉해서 상대경로로 참조하게 하는 방법입니다.

http://www.rgagnon.com/javadetails/java-0504.html

위에 잘 나와있습니다. 이번에도 전 메소드 하나만 샥~ 바꾸면 끝..

    private MimeMessage getMimeMessage(Session session, String title,
            String contents, String to) {
        MimeMessage message = new MimeMessage(session);
        try {
            message.setSubject(title);
            message.setRecipient(RecipientType.TO, new InternetAddress(to));

            //
            // This HTML mail have to 2 part, the BODY and the embedded image
            //
            MimeMultipart multipart = new MimeMultipart("related");

            // first part  (the html)
            BodyPart messageBodyPart = new MimeBodyPart();
            String htmlText = "<H1>Hello</H1><img src=\"cid:image\">";
            messageBodyPart.setContent(htmlText, "text/html");

            // add it
            multipart.addBodyPart(messageBodyPart);
           
            // second part (the image)
            messageBodyPart = new MimeBodyPart();
            DataSource fds = new FileDataSource("C:\\images\\1.jpg");
            messageBodyPart.setDataHandler(new DataHandler(fds));
            messageBodyPart.setHeader("Content-ID","<image>");

            // add it
            multipart.addBodyPart(messageBodyPart);

            // put everything together
            message.setContent(multipart);
        } catch (MessagingException e) {
            throw new RuntimeException(e);
        }
        return message;
    }

message에는 Multipart를 붙이고 Multipart에는 여러 개의 BodyPart를 붙였네요. 흠.. 한 바디에는 HTML을 붙이고, 다른 한 바디에는 그 위에서 참조할 이미지를 붙였습니다. 저런식으로 보내는 거였군요. 이미지는 Content-ID로 참조를 했고, MimeBodyPart의 헤더에 Content-ID를 설정했군요..