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

t9eec4r0  于 2023-02-03  发布在  Node.js
关注(0)|答案(2)|浏览(194)

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

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");
};

我不知道哪里出错了,但我得到了如下错误。

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

但是我调试的时候内容不是空的,是base64字符串。
请帮帮我。

62lalag4

62lalag41#

在这个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
          };

希望这个有用。

flmtquvp

flmtquvp2#

我也遇到过同样的问题,在我的例子中,我使用'xlsx' npm lib来实现解决方案,如下所示:

const workbook = XLSX.utils.book_new();
const ws = XLSX.utils.aoa_to_sheet(data);
XLSX.utils.book_append_sheet(workbook, ws, 'Accounts');

// write the file in base64 format
const report = XLSX.write(workbook, { type: 'base64', compression: true });

const attachment = {
    content: report,
    filename: `MyReport.xlsx`,
    type: 'text/html',
    disposition: 'attachment'
};

相关问题