Как отправить письмо с вложением.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 });