gpt4 book ai didi

asp.net - 我的 ASP.Net 代码可以从 sendgrid 获得电子邮件已发送的确认吗?

转载 作者:行者123 更新时间:2023-12-02 02:22:39 26 4
gpt4 key购买 nike

我在我的应用程序中使用了以下代码:

    private async Task configSendGridasync(IdentityMessage message)
{
var myMessage = new SendGridMessage();
myMessage.AddTo(message.Destination);
myMessage.From = new System.Net.Mail.MailAddress(
"a@b.com", "AB Registration");
myMessage.Subject = message.Subject;
myMessage.Text = message.Body;
myMessage.Html = message.Body;

var credentials = new NetworkCredential(
ConfigurationManager.AppSettings["mailAccount"],
ConfigurationManager.AppSettings["mailPassword"]
);

// Create a Web transport for sending email.
var transportWeb = new Web(credentials);

// Send the email.
if (transportWeb != null)
{
await transportWeb.DeliverAsync(myMessage);
}
else
{
Trace.TraceError("Failed to create Web transport.");
await Task.FromResult(0);
}
}

这里调用:

    public async Task<IHttpActionResult> Register(RegisterBindingModel model)
{

var user = new ApplicationUser()
{
Email = model.Email,
FirstName = model.FirstName,
LastName = model.LastName,
RoleId = (int)ERole.Student,
UserName = model.UserName
};
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
var code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
var callbackUrl = model.Server +
"/index.html" +
"?load=confirmEmail" +
"&userId=" + user.Id +
"&code=" + HttpUtility.UrlEncode(code);
await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking this link: <a href=\"" + callbackUrl + "\">link</a>");
}
if (!result.Succeeded)
{
return GetErrorResult(result);
}
return Ok();

}

有什么方法可以从 sendgrid 获得消息已发送的确认或任何其他信息吗?

最佳答案

通过 SendGrid Web API 发送的电子邮件是异步的,因此要获得确认,您需要实现一个 Webhook。 Event Webhook会将您选择的事件发布到您定义的 URL。在本例中,您对“已交付”事件感兴趣。

您的服务器上需要一些代码来处理传入的 Webhook 并根据结果执行任何逻辑,例如记录传递的事件。有一些社区贡献的库可让您轻松创建 Webhook 处理程序。我建议sendgrid-webhooks ,可在 nuget 上使用。

然后获取传入的 POST 并将其交给解析器以取回对象。

由于您使用的是 ASP.NET MVC,因此您可以在 Controller 内使用 [HttpPost] 方法来接收来自 SendGrid 的 POST 数据。然后您可以使用 sendgrid-webhooks 解析它。

来自sendgrid-webhooks readme :

var parser = new WebhookParser();
var events = parser.ParseEvents(json);

var webhookEvent = events[0];

//shared base properties
webhookEvent.EventType; //Enum - type of the event as enum
webhookEvent.Categories; //IList<string> - list of categories assigned ot the event
webhookEvent.TimeStamp; //DateTime - datetime of the event converted from unix time
webhookEvent.UniqueParameters; //IDictionary<string, string> - map of key-value unique parameters

//event specific properties
var clickEvent = webhookEvent as ClickEvent; //cast to the parent based on EventType
clickEvent.Url; //string - url on what the user has clicked

我在 SendGrid 工作,因此如果有什么需要我帮忙的,请告诉我。

关于asp.net - 我的 ASP.Net 代码可以从 sendgrid 获得电子邮件已发送的确认吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31218563/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com