使用 nodeJS 在 Lambda 函数中发送嵌入图像的邮件

To send mail Embedded with image in Lambda function using nodeJS

我在 AWS 中创建了 lambda 函数,它可以将邮件发送给不同的收件人。 我需要在邮件底部添加公司 logo/banner。 下面是代码

var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport({
host: 'xxxxxx.xxxx.com',
port:587,
secure : true
});
var text = 'xxxxxxxxxx <img src="/Images/banner.jpg"  width="800px" width="78%" height="100px" 
height="11%" border="0" alt="Email banner">';
var mailOptions = {
    from: 'donotreplyhere@xxxx.com',
    to: 'skumar@xxx.com',
    subject: 'Test subject',
    html: text
};
exports.handler = async (event, context, callback) => {
 return new Promise((resolve,reject)=>{
transporter.sendMail(mailOptions, function (error, info) {
if (error) {
    console.log("Error " +error);
   }   else {
        console.log('Email sent: ' + info.response);
     }
    });

 });
}

我收到了邮件,但没有显示图片,出现错误:无法显示链接的图片。

我也尝试过使用 s3 url 在 s3 存储桶中上传图像,但使用它的 url like

<img src="https://falcon-bucket-us-east-1-xxxxxx.s3.amazonaws.com/dev/Images/banner.jpg"  
 width="800px" width="78%" height="100px" "height="11%" border="0" alt="Email banner">';

但这没有用,可能是因为它不是 public 而我无法做到 public。

我可以用来完成此任务的任何其他方式。

感谢观看

以下是一些选项:

  • 如果您可以在 S3 前面使用 CloudFront 并将 CloudFront URL 用于静态内容,请这样做。 Here 是更多信息。
  • 您还可以在任何可公开访问的网站上托管静态内容,例如在 Github pages 上,这也是一个免费的 CDN。
  • 您可以使用 Data URLs 代替图片。您必须将图像转换为 Base64 编码版本并直接在 HTML.
  • 中使用它们
  • 您可以使用 SVG 作为图像。您必须将现有图像转换为 SVG 并直接将内容嵌入 HTML.