Embed image in email body nodemailer nodejs
So I got it to work by using ...
path: __dirname + '/rello-logo-full-svg.svg',
....
But funny this is not what I was trying to achieve because I wanted the image to be in the email body, bu hope this'll help someone else.
Hey, I just changed the file name from .svg to .png, another mistake I made was with the image in the template, I have changed it to
<img style="width:250px;" src="cid:unique@cid">
I found a great example of this at https://community.nodemailer.com/using-embedded-images/. Here is the post
Using Embedded Images
Attachments can be used as embedded images in the HTML body. To use this feature, you need to set additional property of the attachment – cid (unique identifier of the file) which is a reference to the attachment file. The same cid value must be used as the image URL in HTML (using cid: as the URL protocol, see example below).
NB! the cid value should be as unique as 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 }] }
Responding here in case anyone else encounters this! The __dirname
above was really helpful, but this is my code to actually see the image embedded in the email
My img tag:
<img src="cid:logo">
My attachments snippet:
attachments: [{
filename: 'Logo.png',
path: __dirname +'/folder/Logo.png',
cid: 'logo' //my mistake was putting "cid:logo@cid" here!
}]