c# - 带有 Azure Function V2 的 SendGrid 邮件程序
问题描述
我一直在通过 Azure 函数中的 SendGrid 邮件程序的以下代码,
[FunctionName("SendEmail")]
public static async void Run(
[ServiceBusTrigger("myqueue", Connection = "ServiceBusConnection")] Message
email,
[SendGrid(ApiKey = "CustomSendGridKeyAppSettingName")]
IAsyncCollector<SendGridMessage> messageCollector)
{
var emailObject = JsonConvert.DeserializeObject<OutgoingEmail>
(Encoding.UTF8.GetString(email.Body));
var message = new SendGridMessage();
message.AddTo(emailObject.To);
message.AddContent("text/html", emailObject.Body);
message.SetFrom(new EmailAddress(emailObject.From));
message.SetSubject(emailObject.Subject);
await messageCollector.AddAsync(message);
}
public class OutgoingEmail
{
public string To { get; set; }
public string From { get; set; }
public string Subject { get; set; }
public string Body { get; set; }
}
如果我的理解是正确的,这将向消息队列“myqueue”发送一条消息,但我很困惑我是否需要为队列“myqueue”编写一个自定义侦听器以从队列中获取消息并编写一个逻辑来调用“客户端” .SendEmailAsync" 发送邮件或 SendGrid bindng 背后有一些魔法来自动拾取邮件并触发邮件?
解决方案
你的理解并不完全正确。
这将监听队列中的消息。
然后调用 SendGrid API 发送传入的消息。该函数需要一个 JSON 序列化消息作为来自队列的输入:
[ServiceBusTrigger("myqueue", Connection = "ServiceBusConnection")] Message email
推荐阅读
- tensorflow - 仅使用 tensorflow 进行训练中的数据增强
- javascript - 为什么我得到默认的 vuex 存储值而不是计算属性的更新值?
- php - 尝试使用 PhpStorm 在我的远程服务器上安装 Xdebug
- reactjs - 如何在 json-server 中设置主路由
- spring - Spring 如何在 Spring Boot 中的何处解决“java.lang.NoClassDefFoundError: org/springframework/data/mapping/context/MappingContext”?
- java - 如何反序列化我的不可变子类?
- mysql - SELECT 查询,显示每条记录的名称一次和实例数
- javascript - 如何在JS中以相同的次数返回数组中的元素
- matlab - Matlab以编程方式定义图形的缩放和旋转
- javascript - Vue路由器问题,历史模式在第二层不起作用