如何解决如何在Azure函数中使用SendGrid?
我试图了解如何在Azure门户中开发的Azure函数中使用SendGrid。我一直在从Google提出的多个角度来探讨这个问题,但是似乎有许多过时的方法无法解决Azure门户中可用的问题。下面是我当前发送电子邮件的基本迭代,我直接从SendGrid博客(https://sendgrid.com/blog/using-sendgrid-with-azure-functions-to-send-mobile-app-survey-data)中提取了电子邮件。我已经看到了使用 project.json 文件来确保已安装SendGrid软件包的参考,但是我无法在函数中创建这样的文件,我只能操纵 run .csx 和 function.json 文件。以下是我的代码和遇到的错误。我想念什么?
#r "Newtonsoft.Json"
#r "SendGrid"
using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
using SendGrid.Helpers.Mail;
public static void Run(HttpRequest req,ILogger log,out Message message)
{
log.Loginformation("C# HTTP trigger function processed a request.");
message = new Mail {
Subject = "Test Notification"
};
string requestBody = new StreamReader(req.Body).ReadToEnd();
Content content = new Content {
Type = "text/html",Value = requestBody
};
message.AddContent(content);
}
错误:
[错误] run.csx(10,58):错误CS0246:找不到类型或名称空间名称“消息”(您是否缺少using指令或程序集引用?)
[错误] run.csx(14,19):错误CS0246:找不到类型或名称空间名称“邮件”(您是否缺少using指令或程序集引用?)
解决方法
也许尝试使用SendGridMessage message = new SendGridMessage()
???
我首先建议您尝试以下操作,以确保您的SendGrid流正确运行:
然后您可以更新现有代码以使其正常运行。 我能够创建一个示例HTTP触发函数来发送SendGrid消息。我已附上function.json和run.csx供您参考。
function.json
{
"bindings": [
{
"authLevel": "function","name": "req","type": "httpTrigger","direction": "in","methods": [
"get","post"
]
},{
"name": "$return","apiKey": "sendgridkey","to": "receiver@test.com","from": "sender@test.com","direction": "out","type": "sendGrid"
}
]
}
此处,“ sendgridkey”是一个应用程序配置,以SendGrid API密钥作为其值。我为电子邮件添加了虚拟值。
我的run.csx如下:
#r "SendGrid"
#r "Newtonsoft.Json"
using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
using SendGrid.Helpers.Mail;
public static async Task<SendGridMessage> Run(HttpRequest req,ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string name = req.Query["name"];
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic data = JsonConvert.DeserializeObject(requestBody);
name = name ?? data?.name;
SendGridMessage message = new SendGridMessage()
{
Subject = $"Thanks for your order (#{name})!"
};
message.AddContent("text/plain","Your order is being processed now!!");
return message;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。