Как отправить письмо с вложением.xlsx в sendgrid?

Ниже находится объект сообщения, используемый для отправки электронных писем.

 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.

Пожалуйста помоги.

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

Надеюсь это поможет.

Я столкнулся с той же проблемой, и в моем случае я использовал 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'
};

я тоже используюXLSXно обнаружено, что использование формата base64 вызывает проблемы с расширением файла.

Я обнаружил, что для кодировки выходных данных установлено значениеbufferрешил проблему для меня.

      const content = write(workbook, { type: 'buffer', compression: true });
Другие вопросы по тегам