我可以发送一封简单的邮箱,也可以使用特定的模板和模板ID发送邮箱,如下面的示例所示,但是

QUESTION-我如何在下面发送此模板并添加或包含把手数据(例如{"名称":"迈克","url":"一些url","日期":"2022年4月18日")?

仅供参考——我找不到任何显示C#示例的文档.我确实找到了link to create a transactional template,但它没有发送邮箱.所以我不确定这是不是我要找的...

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对象.

下面是两个发送动态模板邮箱withwithout the helper class(搜索dynamic_template_datadynamicTemplateData)的代码示例.因此,mail helper类的完整代码片段如下:

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:下面是general API documentation个,解释了可用的属性.

Csharp相关问答推荐

ListaryImportProperty的默认DllImportSearchPathsProperty行为

为什么我不能更改尚未设置的模拟对象属性的值?

Blazor:类型或命名空间名称Components在命名空间中不存在''

有没有办法把+02:00转换成TimeSpan?""

EF Core在请求列表时忽略列,但在按ID获取时包含

Nuget包Serilog.Sinks.AwsCloudwatch引发TypeLoadExceptions,因为父类型是密封的

为什么在使用动态obj+类obj时会调用串联?

Blazor在FluentButton onClick事件上设置参数

使用泛型可空类实现接口

使用ExtractIconEx(或其他方式)提取最大的可用图标

在.NET 8最低API中从表单绑定中排除属性

避免只读记录 struct 中的防御副本

如何允许数组接受多个类型?

当空判断结果赋给变量时,为什么会出现可能空异常警告的解引用?

具有类型识别的泛型方法

用于请求用户返回列表的C#Google API

C#静态抽象属性不能被子接口覆盖

如何在绑定到数据库的datagridview中向上或向下移动行

WPF如何获取有关从一个视图模型更改另一个视图模型的信息

将文本从剪贴板粘贴到RichTextBox时,新文本不会在RichTextBox ForeColor中着色