如何使用SendGrid在JavaScript版Azure Function中发送邮件?
在JavaScript版Azure Function里用SendGrid发邮件(补全你的代码)
嘿,看你已经搞定了最关键的两步:把SendGrid的API密钥存在应用设置里,也配置好了SendGrid输出绑定,现在就差把代码补全跑起来对吧?我来帮你完善这段代码,确保邮件能正常发出去:
完整可运行的Function代码
module.exports = function (context, myQueueItem) { // 先把要发的邮件内容组装好 var message = { personalizations: [ { to: [ { email: "testto@test.com" } ] } ], from: { email: "testfrom@test.com" }, subject: "Azure news", content: [ { type: 'text/plain', value: myQueueItem || "默认邮件内容(队列消息为空时显示)" } ] }; // 重点!把邮件对象赋值给你的SendGrid输出绑定 // 这里的`outputEmail`要和你function.json里配置的绑定name完全一致 context.bindings.outputEmail = message; // 结束Function执行,第一个参数传null代表没错误,第二个是返回的提示信息 context.done(null, "邮件发送请求已提交"); };
几个必须注意的点
- 绑定名称要对应:你得确保代码里的
context.bindings.outputEmail和function.json里SendGrid输出绑定的name字段一模一样。举个例子,你的function.json里的配置大概是这样的:{ "type": "sendGrid", "name": "outputEmail", "direction": "out", "apiKey": "%SendGridApiKey%", "from": "testfrom@test.com" } - 防空处理:我加了个小判断,要是队列里的消息是空的,邮件会显示默认内容,避免出现空邮件的情况
- 发件人要验证:记得在SendGrid控制台里把你用的
testfrom@test.com做个验证(要么验证整个域名,要么单独验证这个邮箱),不然邮件很可能被当成垃圾邮件或者直接被拒收 - 错误排查:要是之后发邮件出问题,去Azure门户的Function日志里看看,要是有错误,
context.done的第一个参数可以传错误对象,比如context.done(new Error("发送失败")),这样日志里会显示具体问题
测试小技巧
你可以直接在Azure门户的Function测试面板里手动输入一段测试内容,然后点执行,之后去目标邮箱看看有没有收到。要是没收到,先查Function的执行日志,看看是不是哪里配置错了。
内容的提问来源于stack exchange,提问作者user2700254
相关产品推荐
相关产品推荐

