如何在sendgrid中发送带有.xlsx附件的电子邮件?

时间:2018-06-25 10:12:54

标签: javascript node.js sendgrid sendgrid-api-v3

下面是用于发送电子邮件的消息对象。

 message = {
        to: toEmail,
        from: emailInfo.emailFromAddress,
        subject: emailInfo.emailSubjectTemplate,
        attachments: [
          {
            filename: fileName,
            content: base64str,
            contentId: fileName,
            disposition: "attachment"
          }
        ],
        html: emailMessageBodyTemplate
      };

通过以下代码将内容编码为base64字符串。

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

我不知道哪里出了问题,但出现以下错误。

消息:“内容值必须是长度至少为一个字符的字符串。”

但是当我调试时内容不是空的。

请帮助。

2 个答案:

答案 0 :(得分:2)

在此page上,它准确地描述了您的错误。

我相信此错误内容表示您的消息或错误所描述的文字

  

您不能发送没有内容的电子邮件。

根据API文档,您缺少必需的参数内容。

message = {
            to: toEmail,
            from: emailInfo.emailFromAddress,
            subject: emailInfo.emailSubjectTemplate,
            content:[
              {
                 type : 'string',
                 value : 'message'
              }
            ],
            attachments: [
              {
                filename: fileName,
                content: base64str,
                contentId: fileName,
                disposition: "attachment"
              }
            ],
            html: emailMessageBodyTemplate
          };

希望这会有所帮助。

答案 1 :(得分:0)

我遇到了同样的问题,在我的情况下,我使用了“xlsx”npm lib,来实现如下解决方案:

$