我的ASP.Net代码可以从sendgrid得到确认邮件已发送吗?
发布时间:2020-12-15 20:16:21 所属栏目:asp.Net 来源:网络整理
导读:我在我的应用程序中使用了我使用的代码: private async Task configSendGridasync(IdentityMessage message) { var myMessage = new SendGridMessage(); myMessage.AddTo(message.Destination); myMessage.From = new System.Net.Mail.MailAddress( "a@b.co
我在我的应用程序中使用了我使用的代码:
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,因此您可以使用控制器内的[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-mvc-3 – C#lock关键字,我想我用错了
- 在ASP.Net MVC中访问“应用程序”对象来存储应用程序范围的
- asp.net-mvc – asp.net mvc提交时的表单集合
- 如何在ASP.NET MVC中实现Disqus?
- asp.net-mvc – 看起来你忘了注册HTTP模块与Windsor城堡与I
- asp.net-mvc-3 – Asp.Net MVC 3 – @ Html.Action不会呈现
- [你必须知道的.NET] 第八回:品味类型---值类型与引用类型(
- asp.net-mvc – 为什么validateantiforgerytoken cookie值和
- asp.net-mvc-4 – IE 10 Windows身份验证中的异步KendoUI上
- asp.net – 是否可以访问配置文件而不更新LastActivityDate
推荐文章
站长推荐
- forms-authentication – ASP.NET MVC5应用程序在
- 在netcore中实现字段和属性注入
- asp.net-mvc-3 – MVC视图的命名空间问题 – Raz
- asp.net – 如何为同一个按钮运行客户端和服务器
- asp.net-mvc – 与Ninject集成测试
- asp.net – Web部署项目AfterBuild路径问题
- asp.net-mvc – 我的剃刀视图的自定义基页类型,如
- asp.net-mvc – Asp.Net MVC使用来自JQuery UI选
- asp.net-mvc – 从MVC Controller导出到CSV,View
- asp.net-mvc – ASP.NET MVC:正确的地方为部分视
热点阅读