【问题标题】:sending mail with image using sendgrid使用 sendgrid 发送带有图像的邮件
【发布时间】:2018-05-19 05:56:41
【问题描述】:

“上面发送电子邮件的代码是代码。我厌倦了挠头,但仍然无法在邮件中看到图像。我正在将图像转换为 base 64 编码字符串,并且遵循 sendgrid 语法仍然无法发送图像。我不知道这里出了什么问题。:"

var app = require("../../../server/server");
var base64Img = require("base64-img");

let status = null;
let textBody,
  htmBody = null;
var DataSource = require("loopback-datasource-juggler").DataSource;
var dsSendGrid = new DataSource("loopback-connector-sendgrid", {
  api_key: app.customConfig.mail.sendgrid.api_key
});

var fs = require("fs");

function base64_encode(file) {
  var bitmap = fs.readFileSync(file);
  return new Buffer(bitmap).toString("base64");
}

function base64_decode(base64str, file) {
  var bitmap = new Buffer(base64str, "base64");
  fs.writeFileSync(file, bitmap);
  console.log(
    "******** File created from base64 encoded string ********",
    base64str
  );
}

var base64str = base64_encode("../../../images/Campaign-images/Christmas.png");

let message = {
  to: "somebody@gmail.com",
  from: "noreply@gmail.com",
  subject: "test",
  text: "hi",
  html: '<img src="cid:myimagecid"/>',
  attachment: [
    {
      filename: "Christmas2.png",
      content: base64str,
      ContentId: "myimagecid"
    }
  ]
};
console.log(message);
app.models.Email.send(message)
  .then(result => {
    return "sent";
  })
  .catch(err => {
    console.log(err);

    return "failed";
  });

【问题讨论】:

    标签: javascript node.js sendgrid


    【解决方案1】:

    如果我查看https://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/index.html

    我看是附件s不是附件

    还有 content_id 而不是 ContentId

    还要确保您使用的是正确的版本(我指的是 v3,但我认为您可以选择使用 v2)

    【讨论】:

    • 非常感谢它的工作。你能帮我在邮件正文中显示图片,而不是作为单独的附件吗
    • 抱歉,我没有这样做,但我知道您必须将其作为 HTML 而不是 TEXT 发送并使用 img src。
    【解决方案2】:

    可能是因为您的邮件客户端不支持 base 64 编码图像,请参阅question

    【讨论】:

      【解决方案3】:

      这段代码肯定会工作

      //imageData= "data:image/png;base64,ine793nfdsf......."
      
      imageb64 = imageData.replace('data:image/png;base64,' , ''); 
      //remove data:image/png;base64,            
      
      const msg = {
                  to: 'example@gmail.com',
                  from: 'test@gmail.com',
                  subject: "image attached",
                  html :'<img src="cid:myimagecid"/>',
                  attachments: [
                    {
                      filename: "imageattachment.png",
                      content: imageb64,
                      content_id: "myimagecid",
                    }
                  ]
                };
      
            sgMail.send(msg);
      

      【讨论】:

        猜你喜欢
        • 2018-03-13
        • 1970-01-01
        • 2021-10-24
        • 1970-01-01
        • 2016-10-23
        • 1970-01-01
        • 1970-01-01
        • 2013-03-23
        • 2023-04-10
        相关资源
        最近更新 更多