我正在 sendgrid api v3 的帮助下发送电子邮件,但收到警告/错误:
包含字符 '、" 或 & 的内容可能需要使用三个括号 {{{ content }}} 进行转义
在我的 api json 中,我添加了一个包含该&字符的链接:
{"dynamic_template_data": {"link":"...&..."}}
在我的模板中,我使用三个括号{{{ link }}}
一切都按预期进行 - 电子邮件,包括。链接已发送 - 但我总是收到警告/错误。
我错过了 json 中的某些内容吗?
我们有一个站点,我们的代理输入一些数据,然后该数据通过 SendGrid 动态模板发送到客户端。
电子邮件内容包含大量基于输入数据的计算,因此我们希望我们的代理能够在将其发送给客户之前先预览电子邮件并验证内容。
有没有办法使用 SendGrid API 使用 json 对象发送请求,而不是将电子邮件发送给客户端,而是接收生成的电子邮件正文,以便我们可以将其显示给代理并让他们先查看?
我希望使用SendGrid模板发送电子邮件。我使用标准 v3 api 和简单的 axios 调用。
我希望使用模板发送电子邮件。邮件应包含许多行和列。我不知道创建模板时会有多少行/列。行/列数将取决于仅在撰写电子邮件时已知的数据。
在我的代码中我希望:
我的代码(不起作用 - HTML 被视为文本):
//Coompose HTML
let alertHtml = ''
noteObjArray.forEach((nototObj)=>{
...
alertHtml += (myDate !== '') ? `- ${someText} ${myDate } ` : ''
...
alertHtml += '<br/>'
})
//Send mail using SendGrid
const mailSender = firebaseFunctionsConfig.sendgrid.sender
const msg = {
personalizations: [{
to: [{email, name}],
dynamic_template_data: {userName:name, amount, alertHtml}
}],
from: {email: mailSender.email, name: mailSender.name},
reply_to: …Run Code Online (Sandbox Code Playgroud) 我想利用 Sendgrid 模板版本来支持多语言支持。
根据 Sendgrid文档:
一个模板一次只能有一个活动版本。如果您创建了一个包含不同 HTML 的新版本,您希望客户开始接收该版本,则需要将该版本设为“活动”。
因此,例如我有 2 个版本的模板:English(active)和Russian。因此,如果我想用俄语版本发送电子邮件,我需要在发送电子邮件之前激活俄语模板版本。
但我担心的是:如果我需要同时发送俄文和英文版本的电子邮件怎么办?Sendgrind 能否为 2 个同时请求提供合适的版本?
我正在尝试使用 Sendgrid 事务模板来使用 sendgrid节点客户端发送信息电子邮件,例如帐户验证等。我创建了一个主要事务模板,该模板应该有一个带有动态正文文本的按钮和一个带有每封邮件的动态 URL/href 属性的按钮。
我对按钮文本的替换有效,如果我将其替换为 URL 替换,我也会在文本中看到 URL。但是,当我尝试将 url 附加到 href 属性时,它会消失,它只是从我的锚标记中删除 href 属性。这种情况随处可见,无论我是在可视化生成器、HTML 片段还是邮件正文中设置按钮 url,都没有关系。手动设置 URL,无需替换,似乎可行。
我还尝试使用 %value% 作为替换,以及多个邮件客户端(gmail、outlook),但无济于事。请参阅下面的我的发送信息电子邮件的功能:
const sendInformationalEmail = async (to, subject, body, substitutions) => {
const fromMail = new helper.Email(SENDGRID_FROM_MAIL);
const toMail = new helper.Email(to);
const content = new helper.Content('text/html', body);
const mail = new helper.Mail(fromMail, subject, toMail, content);
mail.setTemplateId(process.env.SENDGRID_INFORMATIONAL_TEMPLATE_ID);
Object.keys(substitutions).map(substitution => {
mail.personalizations[0].addSubstitution(
new helper.Substitution(`-${substitution}-`, substitutions[substitution])
);
});
const request = sendgrid.emptyRequest({
method: 'POST',
path: '/v3/mail/send',
body: mail.toJSON()
});
return await …Run Code Online (Sandbox Code Playgroud) 尝试使用带有 azure 函数 sendgrid 集成 (javaScript) 的事务模板,我正在发送以下对象(已删除的电子邮件地址等):
const message =
{
"personalizations":[
{
"to":[
{
"email":"[MY_EMAIL]",
"name":"Rotem"
}
],
"dynamic_template_data":{
"rotem_test1":"wow"
}
}
],
"from":{
"email":"[FROM_EMAIL]",
"name":"name"
},
"reply_to":{
"email":"[REPLY_EMAIL]",
"name":"name"
},
"template_id":"[CORRECT_TEMPLATE_ID]",
"tracking_settings":{
"click_tracking":{
"enable":true
}
}
}
context.done(null,message);
Run Code Online (Sandbox Code Playgroud)
也尝试使用context.done(null,JSON.stringify(message))相同的结果:我从正确的模板中收到一封电子邮件,但没有任何替换。
当https://api.sendgrid.com/v3/mail/send
使用邮递员使用API发送完全相同的对象时,一切正常。
很想在这里获得帮助,了解我在 azure 函数上做错了什么。
我正在尝试通过此库将动态变量插入主题行。
例如:“您好{{name}},欢迎来到{{store_name}}”
我的电子邮件发送没有问题,但主题将 {{name}} 和 {{store_name}} 呈现为...就是这样。没有插入变量。
代码示例:
dynamic_template_data: {
name: "John",
store_name: "My store",
subject: "Hello {{name}}, welcome to {{store_name}}!"
}
Run Code Online (Sandbox Code Playgroud)
在我的 Sendgrid UI 模板中,主题值为:{{subject}} 我也尝试过:{{{subject}}} 但没有成功。
电子邮件已发送,主题行是...您好 {{name}},欢迎来到 {{store_name}}
当它应该是......你好约翰,欢迎来到我的商店!
也许我在这里没有看到显而易见的事情。我正在使用这个库来发送邮件。我还使用交易模板。
一个快速的代码示例:
var msg = new SendGridMessage {From = new EmailAddress("my@email.com")};
var personlization = new Personalization {Tos = new List<EmailAddress> {new EmailAddress("some@email.com")}};
dynamic t = new System.Dynamic.ExpandoObject();
t.firstname = "John";
t.lastname = "Doe";
t.message = "a <br/> line <br/> break";
msg.TemplateId = "abcdefg";
personlization.TemplateData = t;
msg.Personalizations = new List<Personalization> {personlization};
var response = await client.SendEmail(msg);
Run Code Online (Sandbox Code Playgroud)
我可以了解如何使用htmlContentprop 手动添加内容、文本或 html,但在本例中我使用的是事务模板。
在上面的示例中,电子邮件通过 html 编码而不是创建换行符,并且我希望个性化为 html。另外,模板是html。
我正在使用 sendgrid 发送事务性电子邮件(动态模板),但不知道如何查看已打开、已发送的电子邮件的统计信息。是否有一种 GUI 或 API 可以用来查看事务性电子邮件的统计信息?
我尝试设置一个 Sendgrid 动态模板,其中包含多个句柄,其中包括每个句柄的迭代器 整个电子邮件模板 html 可以在她找到
测试数据如下:
{
"total":"1000",
"items":[
{
"text":"Ebook 1",
"qty":"1",
"price":"3"
},
{
"text":"Ebook 2",
"qty":"2",
"price":"3"
},
{
"text":"ebook 3",
"qty":"4",
"price":"3"
}
],
"name":"John Doe",
"address01":"Stargate 292",
"city":"NY",
"state":"NY",
"zip":"4567",
"orderId":"456",
"expiry":"Nov 9 2021",
"customerRef":"123"
}
Run Code Online (Sandbox Code Playgroud)
由于某种原因,我在保存时不断收到此错误:
您的模板已成功保存,但我们检测到您的车把代码存在问题,需要引起注意。
我找不到任何其他错误消息可以准确地告诉我此错误发生的原因和位置。
我正在使用 {{#each}} 迭代,不能 100% 确定设置是否正确
{{#each items}}
<table>
<tr>
<td>{{this.text}}</td>
</tr>
<tr>
<td>{{this.qty}}</td>
</tr>
<tr>
<td>{{this.price}}</td>
</tr>
</table>
{{/each}}
Run Code Online (Sandbox Code Playgroud)
其他车把只是基本的车把等{{ name }}。{{ city }}
有谁有此类错误的经验并知道如何修复它?