1

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

 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字符串时内容不为空。

请帮忙。

4

2 回答 2

3

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

我相信这个错误内容意味着您的消息或错误描述的文本

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

根据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
          };

希望这可以帮助。

于 2018-06-25T12:45:27.207 回答
1

我遇到了同样的问题,在我的情况下,我使用了“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'
};
于 2021-03-03T15:31:12.477 回答