嗨,我正在尝试通过电子邮件发送pdf附件。
sgMail.setApiKey(my_key);
fs.readFile('pdf/4.pdf', function(err, data) {
sgMail.send({
to : 'dinesh@mail.com',
from : 'xxxxxxxxx@jdk.com',
subject : 'Report',
attachments : [{filename: 'Report.pdf',
content: data,
type: 'application/pdf',
}],
html : 'bla bla'})})
这段代码给我一个错误
Invalid type. Expected: string, given: object.
但是我发现了另一个stackoverflow答案的代码片段。它说您不需要传递内容的uri编码数据。 (评论中的那个问题)
如何使用节点js实现此目标?
答案 0 :(得分:0)
我确实将我的编码编码为base64,这就是我的编码方式。也许有帮助。
function base64_encode(file){
let bitmap = fs.readFileSync(file);
return new Buffer(bitmap).toString('base64');
}
let data_base64 = base64_encode('../invoice.pdf');
const msg = {
to: emails,
from: '-----.com',
subject: `Invoice`,
text: `Invoice`,
html: "whatever",
attachments: [
{
filename: `invoice`,
content: data_base64,
type: 'application/pdf',
disposition: 'attachment'
}
]
};
sgMail
.send(msg)
.then((response) => {
res.status(200).send('Success');
})
.catch((err) => {
res.status(500).send(err);
});
希望这对其他人有帮助。 使用@ sendgrid / mail“:” ^ 6.3.1“,