如何使用模板发送 Sendgrid 电子邮件并为模板添加自定义数据?

use*_*050 5 c# email twilio sendgrid sendgrid-templates

我可以发送一封简单的电子邮件,我也可以使用带有 TemplateId 的特定模板发送电子邮件,如下例所示,但是

问题- 如何发送下面的模板并添加或包含车把数据(例如 {"name":"Mike", "url":"some_url", "date":"04/18/2022})?

仅供参考 - 我找不到任何显示任何 C# 示例的文档。我确实找到了此链接来创建交易模板,但它不发送电子邮件。所以不确定这是否是我正在寻找的......

var client = new SendGridClient(Options.SendGridKey);
var msg = new SendGridMessage() {
  From = new EmailAddress(fromEmailAddress, fromEmailName),
  Subject = subject,
  PlainTextContent = message,
  HtmlContent = message,
  TemplateId = "d-30710e173a174ab58cc641nek3c980d4c"
};

var response = await client.SendEmailAsync(msg);
Run Code Online (Sandbox Code Playgroud)

小智 6

解决方案是您需要删除PlainTextContentHtmlContent属性才能使用模板。此外,您还需要提供一个dynamicTemplateData包含占位符的对象。

以下是使用不使用帮助程序类(搜索dynamic_template_data和)发送动态模板电子邮件的两个代码示例dynamicTemplateData。因此,邮件助手类的完整片段如下:

var apiKey = Environment.GetEnvironmentVariable("NAME_OF_THE_ENVIRONMENT_VARIABLE_FOR_YOUR_SENDGRID_KEY");
var client = new SendGridClient(apiKey);
var msg = new SendGridMessage();
msg.SetFrom(new EmailAddress("test@example.com", "Example User"));
msg.AddTo(new EmailAddress("test@example.com", "Example User"));
msg.SetTemplateId("d-d42b0eea09964d1ab957c18986c01828");

var dynamicTemplateData = new ExampleTemplateData
{
    Subject = "Hi!",
    Name = "Example User",
    Location = new Location
        {
        City = "Birmingham",
        Country = "United Kingdom"
        }
    };

msg.SetTemplateData(dynamicTemplateData);
var response = await client.SendEmailAsync(msg);
Run Code Online (Sandbox Code Playgroud)

PS:这里是解释可用属性的通用 API 文档。