簡體   English   中英

使用 node.js 中的 sendgrid 在電子郵件中發送嵌入的圖像

[英]Sending embedded image in email using sendgrid in node.js

我想使用 sendgrid 從節點 js 發送帶有嵌入圖像的電子郵件。 我使用以下代碼

var base64Img = require('base64-img');
const sgMail = require('@sendgrid/mail');
var base64str = base64_encode("logo.png");

function base64_encode(file) {
  var bitmap = fs.readFileSync(file);
  return new Buffer(bitmap).toString("base64");
}
sendMail(["example1@gmail.com"],base64str);
function sendMail(emails,data)
{
sendgrid.send({
      to: emails[0],
      from: 'example2@gmail.com',
      subject: 'Test Mail',
      attachments: [
       {
        filename: "logo.png",
        type : "image/png",
        content: data,
        content_id: "myimagecid",
        disposition : "inline"
       }
     ],
       html:"Please look on the image <img src='content_id:myimagecid'  alt='no image found'/>",

  }, function (err) {
    if (err) {
      response.json({ message: 'Selected but Mail not sended and Error is'+err });
      console.log("Mail error",err);

    } else {
      console.log("Success Mail sended ");
      response.json({ message: 'Selected and Mail sended' });
    }
  });

}

在這里,我使用了disposition : "inline"但圖像仍然作為附件發送。 有人可以幫我嗎?

您將文件定義為附件,因此最終就是這樣。 相反,您需要將其定義為一個文件,然后在您的 html 代碼中調用它。

如果你通讀這篇文章...

https://sendgrid.com/blog/embedding-images-emails-facts/ ,

...您會發現這實際上不是推薦的方法。 相反,您可能希望將 base64 圖像直接嵌入到您的 html 中。

如果你沒有很多圖像,你可以使用Inline Embedding

<img alt="My Image" src="data:image/jpeg;base64,/9j/4S/+RXhpZgAATU0AKgAAAAgACAESAAMAENkDZ5u8/61a+X...more encoding" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM