我正在使用sendgrid发送电子邮件.我想将模板作为电子邮件发送给用户.下面的代码只是发送简单的基于文本的电子邮件,而不是定义标题部分和使用模板ID.
if (Meteor.isServer) {
Email.send({
from: "from@mailinator.com",
to: "abc@mail.com",
subject: "Subject",
text: "Here is some text",
headers: {"X-SMTPAPI": {
"filters" : {
"template" : {
"settings" : {
"enable" : 1,
"Content-Type" : "text/html",
"template_id": "3fca3640-b47a-4f65-8693-1ba705b9e70e"
}
}
}
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
非常感谢您的帮助.
最好
我正在使用带有模块“代码”的SendGrid在线“设计”模板。
他们在他们的文档(https://sendgrid.com/docs/ui/sending-email/editor/#code-modules)中说,代码编辑器不会修改或验证任何HTML。
如果我在代码模块中编写这段代码:
<ul>
{{#each items}}
<li>test</li>
{{/each}}
</ul>
<table>
<tbody>
{{#each items}}
<tr>
<td>Col 1</td>
<td>Col 2</td>
</tr>
{{/each}}
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
结果是:
<ul>
{{#each items}}
<li>test</li>
{{/each}}
</ul>
{{#each items}}{{/each}}
<table>
<tbody><tr>
<td>Col 1</td>
<td>Col 2</td>
</tr></tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
我们可以看到该{{each}}函数在的正确位置保留ul,但是从的内部删除了table。这是暂时的错误吗?我该如何进行简单的操作?
谢谢你的帮助
SendGrid 中的版本控制允许 API 客户端仅通过此处记录的模板 ID 发出模板请求,但是,一次只能“活动”一个模板版本。显然,用于我们的生产应用程序的模板需要始终设置为活动状态,但是如何添加我们在即将发布的版本中使用的新模板版本呢?我如何利用模板版本在我们的测试环境中测试这个“非活动”版本?此处讨论了该问题,但是当您开始关注链接时,它似乎只是关闭并丢失了。
如果无法指定版本控制,那么只剩下几个选项需要创建特定于环境的模板并在发布完成后将它们提升为特定于生产的模板,或者为不同的 SDLC 环境创建单独的帐户并将它们迁移为这一进程向前推进。
此处也讨论了有关语言版本控制的问题,但这确实对我的问题没有帮助。
鉴于 SendGrid 的 API 提供的工具来利用版本控制,最佳实践是什么?拥有不同的 SDLC 步骤命名模板似乎是维护数百个模板的灾难(更不用说每个环境的多个模板了)。在转移到生产时进行测试时,管理多个帐户似乎是一场噩梦。我只是在这里遗漏了一些完全明显的东西吗?
这是我的代码..
var client = new SendGridClient(SendGridEmailEntity.Key);
var from = new EmailAddress(SendGridEmailEntity.Mail, SendGridEmailEntity.DisplayName);
var subject = templateRecord.EmailFrm.SubjectName;
var to = new EmailAddress(activeQueueEntities[i].EmailId, activeQueueEntities[i].Name);
var plainTextContent = "";
var htmlContent = templateRecord.TemplateContent;
Run Code Online (Sandbox Code Playgroud)
var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlContent);
我正在使用 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 }}
有谁有此类错误的经验并知道如何修复它?
我可以发送一封简单的电子邮件,我也可以使用带有 TemplateId 的特定模板发送电子邮件,如下例所示,但是
问题- 如何发送下面的模板并添加或包含车把数据(例如 {"name":"Mike", "url":"some_url", "date":"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);Run Code Online (Sandbox Code Playgroud)
我一直在尝试使用 API 检索 SendGrid 事务模板列表。我正在使用正确的 API 密钥并获得一个空数组,而我的 SendGrid 帐户中存在大约 5 个事务模板。这是回应:
{
"templates": []
}
Run Code Online (Sandbox Code Playgroud)
猜猜可能出了什么问题吗?
使用 Sendgrid、Node.js 和 Firebase 云功能,我能够通过 http 发送电子邮件。在过去的几天里,我的电子邮件再也没有收到过。我并没有真正改变我的代码,所以我不知道是什么导致电子邮件无法发送。我检查了我的 firebase 函数日志,但收到 200 或 204 状态代码。当我检查 sendgrid 时,它显示正在发出请求并且正在发送电子邮件。
是的,我检查了我的垃圾邮件文件夹。
有人可以帮忙吗?
这是我的功能:
const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp();
const cors = require("cors")({ origin: true });
const SENDGRID_API_KEY =
"SENDGRID-APIKEY";
const sgMail = require("@sendgrid/mail");
sgMail.setApiKey(SENDGRID_API_KEY);
exports.httpManagerEmail = functions.https.onRequest((req, res) => {
cors(req, res, () => {
const toEmail = req.body.toEmail;
const managerName = req.body.managerName;
const managerEmail = req.body.managerEmail;
const managerUUID = req.body.managerUUID;
const msg = {
to: toEmail,
from: {
email: "support@BLAH.com", …Run Code Online (Sandbox Code Playgroud) 我有一个动态电子邮件模板,用于向用户发送唯一的令牌链接以重置其密码。我将链接分配给请求对象中个性化的dynamic_template_data 部分中名为“link”的字段。当我收到电子邮件时,我的锚标记没有 href 属性。
这是我的请求对象:
{
method: "POST",
url: "/v3/mail/send",
headers: {
"content-type": "application/json"
},
body: {
personalizations: [
{
to: [{ email: email, name: name }],
dynamic_template_data: {
link: link
}
}
],
// some other content
// ...
template_id: Constants.EMAIL.RESET_PASSWORD
},
json: true
}
Run Code Online (Sandbox Code Playgroud)
以及我的 sendgrid 动态模板中的 html:
<div>Use the following link to reset your password: <a href="{{link}}">{{link}}</a></div>
Run Code Online (Sandbox Code Playgroud)
当我收到电子邮件时,链接的文本已正确填充我的动态内容,但该元素没有 href 属性,因此它呈现为纯文本且不可单击:
特别奇怪的是,当我在 SendGrid 的设计编辑器上预览动态模板时,href 字段会正确填充我传入的测试数据。