Incorporare le immagini in allegato a messaggi di posta elettronica HTML
Domanda
Se posso allegare un'immagine a un messaggio email, come posso inserirlo nel codice HTML contenuto?Ho provato usando solo il nome di file dell'immagine sorgente, ma che non sembra funzionare.
Soluzione
Essere più specifiche su come si costruisce il messaggio di posta elettronica HTML.
Il risultato sarà un messaggio multipart-MIME con una parte text / html (se davvero fate a destra, con una parte alternativa di tipo text / plain) immagini e diversi, che vengono poi fatto riferimento all'interno del codice HTML.
RFC 1813 e RFC 2378 per ulteriori informazioni su Content-ID in MIME mista ei relativi dati (di cui dal CID nel codice HTML).
Altri suggerimenti
È possibile utilizzare allo stesso modo con la proprietà src="cid:bgBoletin"
di tag img
.
La risposta alla tua domanda è nella documentazione di primavera qui .
mailSender.send(new MimeMessagePreparator() {
public void prepare(MimeMessage mimeMessage) throws MessagingException {
MimeMessageHelper message = new MimeMessageHelper(mimeMessage, true, "UTF-8");
message.setFrom("me@mail.com");
message.setTo("you@mail.com");
message.setSubject("my subject");
message.setText("my text <img src='cid:myLogo'>", true);
message.addInline("myLogo", new ClassPathResource("img/mylogo.gif"));
}
});
Il corpo del messaggio è una delle parti del messaggio multipart (notare il secondo parametro impostato su true sul costruttore di MimeMessageHelper che imposta il messaggio a un messaggio multipart).
Il message.addInline("myLogo"...
riga aggiunge l'immagine come un'altra parte del messaggio multipart.
È possibile utilizzare .setText
per impostare il corpo (contenuto HTML) del messaggio di posta elettronica.
È possibile fare riferimento ad altre parti del email multipart (l'immagine) utilizzando il tag cid. Si noti come l'attributo img src è src='cid:myLogo'
. CID è l'id contenuto dell'immagine, inviato come una delle parti del messaggio multipart.
Lo sto facendo in questo modo
_mime = new MimeMultipart();
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart = new MimeBodyPart();
DataSource fds = new FileDataSource("C:\\bgBoletin.jpg");
messageBodyPart.setDataHandler(new DataHandler(fds));
messageBodyPart.setHeader("Content-ID", "<bgBoletin>");
_mime.addBodyPart(messageBodyPart);
E nel file HTM whe di riferimento de Content-ID in questo modo di fondo: url (cid: bgBoletin).
Se questo ha a che fare con l'invio di messaggi di posta elettronica da un sito web che si sta sviluppando, basta tenere le immagini sul server e quindi collegare a loro utilizzando il <img src="url"/>
.
L'immagine in allegato la sezione ha bisogno di Content-ID
--T4nu9J8b
Content-Type: image/png
Content-ID: <idname>
Content-Transfer-Encoding: base64
Content-Disposition: attachment ;filename="testimage.png"
iVBORw0KGgoAAAANS...
--T4nu9J8b--
Nota:Content-ID nome dovrebbe essere messo in una parentesi angolare, come dato
Incorporare in tag con lo stesso ID di Contenuto (senza le parentesi angolare)
<img alt="Embedded Image" src="cid:idname"/>
Questo dovrebbe permettere l'immagine allegata per essere visualizzate in HTML!
Opzione 01:
- allegare il file "mySignaturePictue.jpg" come allegato alla mail
- riferimento questo attaccamento dal corpo (inserirla) con codice come:
<img src="cid:mySignaturePicture.png">
Opzione 02:
- convertire l'immagine in una stringa base64: http://www.motobit.com /util/base64-decoder-encoder.asp
- inserire al mailtext / html-corpo con codice come
<img alt="My Image" src="data:image/jpeg;base64,AWWhcalkjsd/beginning/RXhp/of+/long/base64cod/ZgAATU0/+BlaBlubbZ5u8/61a+Xand/much/more..." />
- Downside: questo è bloccato dalla maggior parte dei clienti e aumenterà la dimensione elettronica, vedere: https://www.campaignmonitor.com/blog/email-marketing/2013/02/embedded-images-in-html-email/ e https://www.paperstreet.com/blog/email -commercializzazione-immagini-embeded-cid-cosa-a-mess /