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



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

-我如何发送以下模板并添加或包含车把数据(例如:{"name";Mike";url";some_url";日期"; "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);

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

下面是两个代码示例,分别使用和不使用helper类发送动态模板电子邮件(搜索dynamic_template_datadynamicTemplateData)。所以带有邮件助手类的完整代码片段应该是:
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);

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

最新更新