如何发送存储的模板并指定 reply_to、from.name 和 from.email?
How to send a stored template and also specify reply_to, from.name and from.email?
Here 解释了如何在发送内联内容时指定这些属性,但在发送存储模板时据说它们是禁止的。
我尝试通过指定模板 ID 和禁用属性发送电子邮件:reply_to
、from.name
和 from.email
,但禁用属性被忽略了。
我看到在发送交易电子邮件时将 Reply-To header 设置为正常的,并非不寻常的,但我发现在发送存储的模板时我无法这样做很奇怪。从代码而不是从 SparkPost 模板编辑器设置发件人姓名和电子邮件似乎也是一个很好的功能。
我的代码看起来像这样(它使用 SparkPost NodeJS API 并且使用此代码成功发送了带有替换数据的电子邮件,因此问题不在 substitution_data
、recipients
或在此代码的回调部分):
client.transmissions.send({
transmissionBody: {
content: {
template_id: 'my-first-email',
reply_to: 'example@sparkpostbox.com', // example email address
from: {
name: 'My Name',
email: 'example2@sparkpostbox.com'
}
},
substitution_data: { /* ... */ },
recipients: [ /* ... */ ]
}
}, function (err, res) { /* ... */ });
更新:我在 SparkPost 支持中心找到了 this question,但它对我没有帮助。
更新 2:我还发现了 this support question 这可能会有一点帮助,但我仍然需要一种方法来设置 Reply-To
header我还不确定 From
电子邮件地址(不是 From
名称,我从链接文章中确定它可以做到这一点)是否可以使用动态替换数据。
更新 3:我向 SparkPost 支持发送了一封电子邮件并收到了以下答复:
The Product Manager relayed that we do not have a time frame of when
this feature will be in the product. Please keep an eye on our website
and slack channel for updates.
由于我已经测试并接受了这个问题的答案,所以我认为他们不太了解我。但毕竟这是一个幸福的结局。
如果指定 template_id
,则不能在 content
object 中指定任何其他选项。因此,如果您想自定义模板,则需要在模板中添加替换变量。
需要注意的一件事是,如果您在 From:
header 中使用替换变量,这意味着您无法使用 UI 编辑该模板,因为有一个硬要求(在 UI 中)使用经过验证的发送域。
正如 Dave Gray 上面提到的,您可以在模板中使用替换变量来设置自定义 'From name'、'From email' 和 'Reply-To' 字段。
这是一个示例模板,展示了它的外观:
{
"content": {
"from": {
"name": "{{fromName}}",
"email": "{{fromEmail}}"
},
"subject": "{{subject}}",
"html": "Hi! I am an HTML part.",
"text": "I am a text part.",
"reply_to": "{{replyTo}}"
}
}
正如 Dave 还指出的那样,您需要使用 API 来更新包含这些字段的存储模板。 Here's a gist with some JS to do that.
然后你可以在传输中设置fromName
、fromEmail
和replyTo
:
{
"recipients": [
"..."
],
"content": {
"template_id": "your-dynamic-template"
},
"substitution_data": {
"fromName": "Your Name",
"fromEmail": "you@yourdomain.com",
"replyTo": "youagain@yourotherdomain.com"
}
}
Here 解释了如何在发送内联内容时指定这些属性,但在发送存储模板时据说它们是禁止的。
我尝试通过指定模板 ID 和禁用属性发送电子邮件:reply_to
、from.name
和 from.email
,但禁用属性被忽略了。
我看到在发送交易电子邮件时将 Reply-To header 设置为正常的,并非不寻常的,但我发现在发送存储的模板时我无法这样做很奇怪。从代码而不是从 SparkPost 模板编辑器设置发件人姓名和电子邮件似乎也是一个很好的功能。
我的代码看起来像这样(它使用 SparkPost NodeJS API 并且使用此代码成功发送了带有替换数据的电子邮件,因此问题不在 substitution_data
、recipients
或在此代码的回调部分):
client.transmissions.send({
transmissionBody: {
content: {
template_id: 'my-first-email',
reply_to: 'example@sparkpostbox.com', // example email address
from: {
name: 'My Name',
email: 'example2@sparkpostbox.com'
}
},
substitution_data: { /* ... */ },
recipients: [ /* ... */ ]
}
}, function (err, res) { /* ... */ });
更新:我在 SparkPost 支持中心找到了 this question,但它对我没有帮助。
更新 2:我还发现了 this support question 这可能会有一点帮助,但我仍然需要一种方法来设置 Reply-To
header我还不确定 From
电子邮件地址(不是 From
名称,我从链接文章中确定它可以做到这一点)是否可以使用动态替换数据。
更新 3:我向 SparkPost 支持发送了一封电子邮件并收到了以下答复:
The Product Manager relayed that we do not have a time frame of when this feature will be in the product. Please keep an eye on our website and slack channel for updates.
由于我已经测试并接受了这个问题的答案,所以我认为他们不太了解我。但毕竟这是一个幸福的结局。
如果指定 template_id
,则不能在 content
object 中指定任何其他选项。因此,如果您想自定义模板,则需要在模板中添加替换变量。
需要注意的一件事是,如果您在 From:
header 中使用替换变量,这意味着您无法使用 UI 编辑该模板,因为有一个硬要求(在 UI 中)使用经过验证的发送域。
正如 Dave Gray 上面提到的,您可以在模板中使用替换变量来设置自定义 'From name'、'From email' 和 'Reply-To' 字段。
这是一个示例模板,展示了它的外观:
{
"content": {
"from": {
"name": "{{fromName}}",
"email": "{{fromEmail}}"
},
"subject": "{{subject}}",
"html": "Hi! I am an HTML part.",
"text": "I am a text part.",
"reply_to": "{{replyTo}}"
}
}
正如 Dave 还指出的那样,您需要使用 API 来更新包含这些字段的存储模板。 Here's a gist with some JS to do that.
然后你可以在传输中设置fromName
、fromEmail
和replyTo
:
{
"recipients": [
"..."
],
"content": {
"template_id": "your-dynamic-template"
},
"substitution_data": {
"fromName": "Your Name",
"fromEmail": "you@yourdomain.com",
"replyTo": "youagain@yourotherdomain.com"
}
}