当前,当包含指定PDF的Blob到达我们的Blob存储库时,我正在使用Azure函数和带有Sendgrid的node.js向用户发送电子邮件。很好,但是我现在尝试将PDF本身附加到电子邮件中。每次尝试此操作时,PDF都已附加到电子邮件中,但不会打开(称其已损坏)。 这本质上是这个问题(Azure Function (JS) using SendGrid with attachment),但是由于我是新用户,因此我无法发表评论。
但是我不明白如何设置附件的内容。
这是我的代码:
var util = require('util');
module.exports = function (context, myBlob) {
var message = {
"personalizations": [ { "to": [ { "email": "myEmail@myDomain.org" } ] } ],
from: { email: "YouveGotMail@AlertSystem.org" },
subject: util.format('%s', context.bindingData.name),
content: [{
type: 'text/plain',
value: util.format("New Mail #%s", context.bindingData.name)
}],
attachments: [
{
content: context.bindings.myBlob,
filename: util.format('%s.pdf', context.bindingData.name),
type: 'application/pdf',
disposition: 'attachment',
},
]
};
context.done(null, message);
};
我在content变量中尝试过的其他输入: myBlob,新缓冲区(context.bindings.myBlob,“ base64”),“ base64”。 任何帮助将不胜感激,在此先感谢您的宝贵时间。
答案 0 :(得分:1)
要使用base64编码,您需要先将输入的blob数据类型更改为二进制。
在您的"dataType": "binary"
blob触发器绑定中添加function.json
。
然后将PDF编码为base64字符串
content: new Buffer(myBlob).toString('base64')