Je suis l'approche utilisée dans la communauté nodemailer site mais je n'arrive pas à le faire fonctionner car j'obtiens l'erreur
Failed to send email { Error: ENOENT: no such file or directory, open
'./rello-logo-full-svg.svg'
errno: -2,
code: 'ESTREAM',
syscall: 'open',
path: './rello-logo-full-svg.svg',
command: 'API' }
Les options de nodemailer sont les suivantes
let mailOptions = {
from: '<from_email>',
to: to_email_address.toString(),
subject: 'Subject',
text: 'Hello world', // plain text body
attachments: [{
filename: 'rello-logo-full-svg.svg',
path: './rello-logo-full-svg.svg',
cid: 'unique@cid'
}],
html: emailBody
};
Et dans la variable emailBody j'ai une chaîne de modèle avec une ligne de tag d'image comme ça
<img style="width:250px;" cid:unique@cid>
Dois-je peut-être besoin de définir les actifs statiques pour express ou quoi, le fichier image est dans le même dossier que le fichier qui a le code ci-dessus, toute aide est appréciée
Je l'ai donc fait fonctionner en utilisant ...
path: __dirname + '/rello-logo-full-svg.svg',
....
Mais drôle, ce n'est pas ce que j'essayais de réaliser parce que je voulais que l'image soit dans le corps de l'e-mail, mais j'espère que cela aidera quelqu'un d'autre.
Hé, je viens de changer le nom du fichier de . Svg à . Png, une autre erreur que j'ai faite était avec l'image dans le modèle, je l'ai changé en
<img style="width:250px;" src="cid:unique@cid">
Répondre ici au cas où quelqu'un d'autre rencontrerait cela! Le __dirname
ci-dessus a été très utile, mais voici mon code pour voir l'image incorporée dans l'e-mail
Mon tag img:
<img src="cid:logo">
Extrait de mes pièces jointes:
attachments: [{
filename: 'Logo.png',
path: __dirname +'/folder/Logo.png',
cid: 'logo' //my mistake was putting "cid:logo@cid" here!
}]
J'ai trouvé un excellent exemple de cela sur https://community.nodemailer.com/using-embedded-images/ . Voici le post
Utilisation d'images intégrées
Les pièces jointes peuvent être utilisées comme images incorporées dans le corps HTML. Pour utiliser cette fonction, vous devez définir une propriété supplémentaire de la pièce jointe - cid (identifiant unique du fichier) qui est une référence au fichier joint. La même valeur cid doit être utilisée comme URL de l'image en HTML (en utilisant cid: comme protocole URL, voir l'exemple ci-dessous).
NB! la valeur cid doit être aussi unique que possible!
var mailOptions = { ... html: 'Embedded image: <img src="cid:[email protected]"/>', attachments: [{ filename: 'image.png', path: '/path/to/file', cid: '[email protected]' //same cid value as in the html img src }] }