当使用sendgridMail.send
函数发送交易模板时,任何添加到data
对象的主题行都会传递sendgridMail.send
(通过data.subject
或data.personalizations[someIndex].subject
) 被丢弃,并使用在实际交易模板本身上指定的主题行。
我期望的行为是data
对象上指定的字段将覆盖任何现有的模板字段,但情况似乎并非如此。 查看 v3 邮件发送 API 的文档, template_id
字段的描述说明:
您要使用的模板的 ID。 如果您使用包含主题和内容(文本或 html)的模板,则无需在个性化或消息级别指定这些内容。
对我来说,“您不需要在个性化或消息级别指定那些”意味着您可以覆盖模板主题。 如果不是这种情况,则应将描述更改为“您不能在个性化或消息级别指定那些”。
sendgridMail.send
发送电子邮件,其中我将data.subject
指定为“[TEST] 我的电子邮件主题”sendgridMail.send
函数发送模板。 还要确保指定data.subject
或data.personalizations[someIndex].subject
。你好@10kc-zack,
我相信在交易模板中,您会将主题设置为 {{ subject }},然后在您的代码中将data.subject
设置为"[TEST] My Email Subject"
。
那对你有用吗?
最诚挚的问候,
埃尔默
感谢@thinkingserious的回复和您的建议!
虽然这确实完成了工作(并且是我们目前使用的变通方法),但我更希望能够将主题设置为我们的 API 调用主体的一部分。 您能否确认提供给 API 的主题实际上已被丢弃并且 API 文档中缺少该信息?
你好@10kc-zack,
我相信在交易模板中,您会将主题设置为 {{ subject }},然后在您的代码中将
data.subject
设置为"[TEST] My Email Subject"
。那对你有用吗?
最诚挚的问候,
埃尔默
正如@10kc-zack 所说,这个解决方法确实有效,但我也注意到模板正在将一些字符转换为 html 实体,例如'
撇号 .. 即“某人的”。 我的电子邮件到达时主题Someone's
我在使用 SendMail Nuget 包方法设置主题行时遇到问题。 这是我的代码,我尝试使用上面的信息对其进行更新:
public async Task SendAsyncTemplate(string FromAddress, string FromName, string ToAddress, string ToName, string Subject, string LinkText, string LinkUrl)
{
_logger.LogInformation($"Sending mail to: {ToAddress}, with subject: {Subject}");
var apiKey = _sendGridOptions.SendGridAPI;
var client = new SendGridClient(apiKey);
var from = new EmailAddress(FromAddress, FromName);
var to = new EmailAddress(ToAddress, ToName);
var msg = new SendGridMessage();
var templateData = new ExampleTemplateData
{
Subject = Subject,
Name = ToName,
LinkText = LinkText,
LinkUrl = LinkUrl
};
msg.Subject = "{{subject}}";
msg.SetFrom(from);
msg.AddTo(to);
msg.AddCc(from);
msg.SetTemplateId("supersecret");
msg.SetTemplateData(templateData);
var response = await client.SendEmailAsync(msg);
_logger.LogInformation($"SendGrid Response Status Code: {response.StatusCode}");
}
private class ExampleTemplateData
{
[JsonProperty("subject")]
public string Subject { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("linkText")]
public string LinkText { get; set; }
[JsonProperty("linkUrl")]
public string LinkUrl { get; set; }
}
我已经在调试模式下运行,并且值设置正确。 我作为主题行得到的是一个连字符。 有任何想法吗?
呸! 我找到了需要设置 {{subject}} 的地方。 如果其他人遇到此问题,请进入编辑您的模板,然后单击左侧的“设置”。 将有一个空格可以输入您的主题。 在此处输入 {{subject}}。
@smschick ,
在你的情况下,你会做{{{ subject }}}
。
@thinkingserious这确实是我指的文档:+1:
是否有任何计划能够在不使用dynamic_template_data
情况下通过 API 设置主题?
@mou01关于如何设置主题的简单示例: https :
是的,使用动态模板数据时无法通过个性化传递主题,这相当令人困惑,您必须将其传递到数据中。
@mou01关于如何设置主题的简单示例: https :
这适用于动态模板吗?
我认为不是,我认为动态模板背后的想法是您在模板设置中设置主题,并且您可以在主题中使用动态数据。 权衡是,如果您希望它完全灵活,则必须将其传递到动态数据中。
如果有人遇到这个问题:
转到您的模板并单击带有齿轮图标的“设置”并将其放在主题字段{{subject}}
最后在发送您的有效负载时“ dynamic_template_data ”应该具有主题值。
"dynamic_template_data":{
"subject": "My Subject Value here"
}
在文档更改时关闭此问题不是可以在此 repo 中修复的内容。 我已经向文档团队提交了一个请求(参考标题:_Updates to mail-send template_id description_),并且会在有任何更新时返回这里。
文档已更新。
谢谢@childish-sambino
三重括号仍然有效,这仍然是官方解决方案吗?
谢谢!
@tcukanoot是的。
最有用的评论
呸! 我找到了需要设置 {{subject}} 的地方。 如果其他人遇到此问题,请进入编辑您的模板,然后单击左侧的“设置”。 将有一个空格可以输入您的主题。 在此处输入 {{subject}}。