首页 > 解决方案 > 带有 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 背后有一些魔法来自动拾取邮件并触发邮件?

标签: c#azureazure-functionssendgrid

解决方案


你的理解并不完全正确。

这将监听队列中的消息。

然后调用 SendGrid API 发送传入的消息。该函数需要一个 JSON 序列化消息作为来自队列的输入:

[ServiceBusTrigger("myqueue", Connection = "ServiceBusConnection")] Message email

推荐阅读