如何使用节点和快递服务器在ejs电子邮件模板中发送图像?

问题描述 投票:1回答:1

我正在使用nodemailer发送电子邮件,并在EJS中拥有电子邮件模板。当我在计算机上渲染此模板时,我也可以看到logo/image,但是当我将该模板发送到电子邮件地址时,图像未显示在电子邮件中。

我正在使用静态middleware托管图像,这是middleware

app.use('/static', express.static(path.join(__dirname, 'public')))

有没有办法设置电子邮件中的logo/image

node.js express email ejs nodemailer
1个回答
0
投票

发送到电子邮件时,必须将图像的完整路径提供给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;

});
© www.soinside.com 2019 - 2024. All rights reserved.