How to embed images into velocity html template so the recipient can read it without opening the file?
I am following the instructions at: http://sengopal.github.io/blog/blog/java-mail-using-velocity-templates.html
This is my code:
public class SendEmailVelocity {
    public static void main(String[] args) {
        final String username = Contants.myEmail;
        final String password = Contants.myPass;
        final String toMailRecipient = Contants.mailRecipient;
        Properties props = new Properties();
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.port", "587");
        Session session = Session.getInstance(props,
        new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, password);
            }
        });
        try {
            Template template = Velocity.getTemplate("helloworld.vm");
            VelocityContext context = new VelocityContext();
            context.put("name", "ABC123");
            StringWriter message = new StringWriter();
            template.merge(context, message);
            MimeMultipart multipart = new MimeMultipart("related");
            BodyPart imageBodyPart = new MimeBodyPart();
            StringBuffer imgPath = new StringBuffer().append(File.separator).append("D:\\Temp\\data\\logo.gif");
            DataSource fds = new FileDataSource(imgPath.toString());
            imageBodyPart.setDataHandler(new DataHandler(fds));
            imageBodyPart.setHeader("Content-ID", "<imageID>");
            multipart.addBodyPart(imageBodyPart);
            BodyPart messageBodyPart = new MimeBodyPart();
            StringBuffer messageBuffer = new StringBuffer();
            messageBuffer.append(message.toString());
            messageBuffer.append("<img src='cid:imageID\'>");
            messageBodyPart.setContent(messageBuffer.toString(), "text/html");
            multipart.addBodyPart(messageBodyPart);
            Message msg = new MimeMessage(session);
            msg.setContent(multipart);
            msg.addRecipients(Message.RecipientType.TO, InternetAddress.parse(toMailRecipient));
            msg.setSubject("Test Email Velocity ");
            msg.setSentDate(new Date());
            msg.setFrom(new InternetAddress("dummy@example.com"));
            Transport transport = session.getTransport("smtp");
            transport.connect(props.getProperty("connectHost"), props.getProperty("connectUser"), props.getProperty("connectPassword"));
            transport.sendMessage(msg, msg.getAllRecipients());
            transport.close();
            System.out.println("Sent!!!");
        } catch (MessagingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
But the result of the recipient's email is two attachments the recipient's email
 
     
    