Si j'attache une image à un e-mail, comment puis-je la placer dans le contenu HTML? J'ai essayé juste en utilisant le nom de fichier comme source d'image mais cela ne semble pas fonctionner. Soyez plus précis sur la façon dont vous construisez le message de courrier HTML.Intégration d'images attachées dans des e-mails HTML
Répondre
Le résultat sera un message multipart-MIME avec une partie text/html (si vous le faites vraiment bien avec une partie alternative de type text/plain) et plusieurs images, qui sont ensuite référencées depuis le HTML.
Voir RFC 1813 et RFC 2378 pour plus d'informations sur content-id dans MIME mixte et les données connexes (référencé par CID dans la source HTML).
Il est construit comme un message MIME en plusieurs parties avec des parties html et image.Si je lis correctement ces RFC, il me semble que j'ai juste besoin de mettre un identifiant de contenu sur les pièces jointes, puis d'utiliser cid: xxx comme source d'image. – user83358
Ceci est correct, si tout le reste est déjà en place dans le message MIME, il est facile de les intégrer. – Lucero
Si cela concerne l'envoi d'e-mails à partir d'un site Web que vous développez, conservez simplement les images sur votre serveur, puis liez-les à l'aide du <img src="url"/>
.
... la plupart des applications de messagerie modernes ne montrent ces images pour des raisons de sécurité que si elles sont explicitement confirmées par l'utilisateur. L'incorporation d'images (petites) est beaucoup mieux afin de s'assurer que le message apparaîtra comme prévu (ou, ce sera plus probable). – Lucero
@Lucero contournement activement le comportement de l'application est tabou, à mon avis. L'utilisateur a choisi d'utiliser une application donnée en raison de ses caractéristiques, et peut en fait être offensé que quelqu'un ait fait tout son possible pour contourner cette fonctionnalité. La plupart des applications de messagerie modernes vous permettent également de visualiser en permanence les images de certains expéditeurs (ou même de certains domaines), ce qui permet à l'utilisateur de décider s'il souhaite voir vos images dans le futur. –
@NathanCox, il ne s'agit pas du tout de contourner la fonctionnalité. Les clients de messagerie ne téléchargent pas d'images pour protéger les utilisateurs de l'exposition (lorsque l'adresse Web est personnalisée, l'expéditeur peut savoir quand le courrier a été lu et que l'adresse e-mail est toujours valide et utilisée). Ne pas afficher les images liées est une mesure de sécurité et n'a rien à voir avec la préférence des utilisateurs de voir des images (c'est un paramètre distinct dans certains clients de messagerie). – Lucero
Je le fais de cette façon
_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);
Et dans le fichier HTM whe référence de Content-ID dans ce contexte de façon: url (cid: bgBoletin).
votre classe est MAIL? ... pour utiliser "MimeMultipart" -> activation de classe? – delive
Vous pouvez utiliser la même propriété avec la propriété src="cid:bgBoletin"
de img
.
La réponse à votre question se trouve dans les documents de printemps here.
mailSender.send(new MimeMessagePreparator() {
public void prepare(MimeMessage mimeMessage) throws MessagingException {
MimeMessageHelper message = new MimeMessageHelper(mimeMessage, true, "UTF-8");
message.setFrom("[email protected]");
message.setTo("[email protected]");
message.setSubject("my subject");
message.setText("my text <img src='cid:myLogo'>", true);
message.addInline("myLogo", new ClassPathResource("img/mylogo.gif"));
}
});
Le corps du message est l'une des parties du message en plusieurs parties (note du deuxième jeu de paramètres à vrai sur le constructeur de MimeMessageHelper qui donne le message à un message en plusieurs parties).
La ligne message.addInline("myLogo"...
ajoute l'image en tant qu'autre partie du message en plusieurs parties.
Vous pouvez utiliser .setText
pour définir le corps (contenu HTML) du message électronique.
Vous pouvez vous référer à d'autres parties de l'email multipart (votre image) en utilisant le tag cid. Notez comment l'attribut img src est src='cid:myLogo'
. cid est l'identifiant de contenu de l'image, envoyé comme l'une des parties du message en plusieurs parties.
s'il vous plaît poster votre classe MimeMessage MimeMessageHelper, ou directement .jar – delive
Option 01:
- joindre le fichier "mySignaturePictue.jpg" en pièce jointe au courrier
- référence cet attachement du corps (insérer) cinque code comme:
<img src="cid:mySignaturePicture.png">
Option 02:
- convertir votre image à une chaîne base64: http://www.motobit.com/util/base64-decoder-encoder.asp
- l'insérer dans le mailtext/html corps avec le code comme
<img alt="My Image" src="data:image/jpeg;base64,AWWhcalkjsd/beginning/RXhp/of+/long/base64cod/ZgAATU0/+BlaBlubbZ5u8/61a+Xand/much/more..." />
- Inconvénient: il est bloqué par la plupart des clients et augmenter la taille du courrier, voir: https://www.campaignmonitor.com/blog/email-marketing/2013/02/embedded-images-in-html-email/ et https://www.paperstreet.com/blog/email-marketing-embeded-images-cid-what-a-mess/
Vous essayez de faire programatically, ou par un client de messagerie? – biggusjimmus