Incorporamento di immagini in e-mail html con posta java

Sto inviando html e immagini con javamail ma per qualche motivo non vedo le immagini come parte dell’html, le vedo solo come allegato. Non so perché sia ​​così. Ecco come appare quando uno dei miei utenti riceve un’email: inserisci la descrizione dell'immagine qui

Vorrei anche ricordare che è così che l’html assomiglia a:

private String generateActivationLinkTemplate() { String htmlText = ""; htmlText ="

Thanks for Joining Site.com

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Username:
Password:

To confirm your email click here.

www.site.com | contact@site.com | +38200 123 456
";}

Ho bisogno di un html, un body e un tag head …?

Ecco come appare l’implementazione di Java:

 @Stateless(name = "ejbs/EmailServiceEJB") public class EmailServiceEJB implements IEmailServiceEJB { @Resource(name = "mail/myMailSession") private Session mailSession; public void sendAccountActivationLinkToBuyer(String destinationEmail, String name) { // Destination of the email String to = destinationEmail; String from = "dontreply2thismessage@gmail.com"; try { Message message = new MimeMessage(mailSession); // From: is our service message.setFrom(new InternetAddress(from)); // To: destination given message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); message.setSubject("Uspijesna registracija"); // How to found at http://www.rgagnon.com/javadetails/java-0321.html message.setContent(generateActivationLinkTemplate(), "text/html"); Date timeStamp = new Date(); message.setSentDate(timeStamp); // Prepare a multipart HTML Multipart multipart = new MimeMultipart(); // Prepare the HTML BodyPart htmlPart = new MimeBodyPart(); htmlPart.setContent(generateActivationLinkTemplate(), "text/html"); // PREPARE THE IMAGE BodyPart imgPart = new MimeBodyPart(); String fileName = "logoemailtemplate.png"; ClassLoader classLoader = Thread.currentThread() .getContextClassLoader(); if (classLoader == null) { classLoader = this.getClass().getClassLoader(); if (classLoader == null) { System.out.println("IT IS NULL AGAIN!!!!"); } } DataSource ds = new URLDataSource(classLoader.getResource(fileName)); imgPart.setDataHandler(new DataHandler(ds)); imgPart.setHeader("Content-ID", "logoimg"); multipart.addBodyPart(imgPart); multipart.addBodyPart(htmlPart); // Set the message content! message.setContent(multipart); Transport.send(message); } catch (MessagingException e) { throw new RuntimeException(e); } } 

Penso che la parte java per me sia a posto, ma sono sospettoso solo il markup html, c’è qualcosa che non va? Penso che il tag img non funzioni correttamente e per non avere motivo l’immagine non appare nell’email (Notare che appare solo come allegato):

  

    Avete controllato che il tipo di contenuto sia corretto e che il contenuto dell’immagine-disposizione sia impostato su inline?

    Anche Content-ID deve essere globalmente unico, non puoi semplicemente dire “logoimg”. Prova logimg-randomnumbers-dontreply2thismessage@gmail.com . Questo potrebbe non essere il tuo problema.

    L’errore è dovuto a

    Dovrebbero essere presenti: imgPart.setHeader("Content-ID", "");

    Not: imgPart.setHeader("Content-ID", "logoimg");

    Vale a dire: è necessario il “< " e ">”