我正在使用nodemailer
发送电子邮件,并在EJS
中拥有电子邮件模板。当我在计算机上渲染此模板时,我也可以看到logo/image
,但是当我将该模板发送到电子邮件地址时,图像未显示在电子邮件中。
我正在使用静态middleware
托管图像,这是middleware
:
app.use('/static', express.static(path.join(__dirname, 'public')))
有没有办法设置电子邮件中的logo/image
?
发送到电子邮件时,必须将图像的完整路径提供给ejs模板
// common function used for send different emails
async sendMail(to:string, template:string, subject:string) {
//create transport to send mail
var transporter = nodemailer.createTransport({
service: config.get('SMTP_CONSTANTS.SERVICE'),
auth: {
user: config.get('SMTP_CONSTANTS.USERNAME'),
pass: config.get('SMTP_CONSTANTS.PASSWORD')
}
});
//define mail options
var mailOptions = {
from: 'Your Domain <[email protected]>',
to: to, // receiver
subject: subject, // Subject line
html: template
};
// send mail with defined transport object
let response = await transporter.sendMail(mailOptions);
return response;
}
app.get('/test',(req,res)=>{
let image_path = path.join(__dirname+'public/','logo.png');
console.log('image_path==',image_path);
let subject = 'Welcome To Website';
let to = 'to send mail';
let parameters = {
name: 'James',
image_path:image_path
};
let html = ejs.render(fs.readFileSync(__dirname+`/../views/auth/welcome.ejs`).toString(), parameters);
let response:any = await this.sendMail(to, html, subject).then((data:any)=>{return data}).catch(error => { return error });
return response;
});