Azure Function Sendgrid附件损坏

时间:2018-07-11 13:02:30

标签: node.js azure azure-functions sendgrid

当前,当包含指定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”。 任何帮助将不胜感激,在此先感谢您的宝贵时间。

1 个答案:

答案 0 :(得分:1)

要使用base64编码,您需要先将输入的blob数据类型更改为二进制。

在您的"dataType": "binary" blob触发器绑定中添加function.json

然后将PDF编码为base64字符串

content: new Buffer(myBlob).toString('base64')