Asp.net 核心 SendGrid 动态模板集成

Asp.net Core SendGrid Dynamic Template Integration

我最近将 SendGrid 添加到我的 .net Core razor 项目中。为了使自动帐户确认和密码重置电子邮件更加专业,我尝试实施动态模板。电子邮件以前工作正常,但一旦我使用 SendGrid 帮助程序添加模板 ID,电子邮件就不会发送。

 //string emailString = "<html><body>"
                    //+ "<img src='https://publishendersapp.azwebsites.net/images/logo.png' />"
                    //+ "<p>Dear " + user.FirstName + ",</p>"
                    //    + "<p>Thank you for registering for PublishFinders.com! We are glad to have you on board.</p>"
                    //    + $"Please <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'> click </a> here to confirm your email address. <br />"


                    //    + "<p>Thank you for registering ! </p>"
                    //    + "<p>The PublisherFinders Team</p>" +
                    //    "</body></html>";

                    //await _emailSender.SendEmailAsync(
                    //    Input.Email, "Confirm your email ", emailString

                    //    );

此代码使用它工作正常但不能使用模板发送

您似乎正在尝试使用 SMTP 发送电子邮件。要使用动态模板发送邮件,您必须使用 Web API mail.send。 SMTP 发送不支持动态模板。

查看以下内容linkhttps://docs.sendgrid.com/ui/sending-email/how-to-send-an-email-with-dynamic-transactional-templates

以下对我来说很好:

var templateId = "x-xxxxxxxxxx";
var dynamicTemplateData = new { };

// Create a SendGrid E-Mail
var apiKey = _config.GetValue<string>("SendGridKey");
var emailKey = _config.GetValue<string>("Email");
var client = new SendGridClient(apiKey);
EmailAddress feedbackFrom =  new EmailAddress(emailKey, null);

var feedBack = MailHelper.CreateSingleTemplateEmail(feedbackFrom, feedBackTo, templateId, dynamicTemplateData);
var feedBackResponse = await client.SendEmailAsync(feedBack);

就这些了!