标签: sendgrid-api-v3

如何通过 SendGrid 发送 .ics 日历邀请,以便它在电子邮件客户端中呈现?

我正在尝试.ics通过 SendGrid (从节点服务器)发送日历邀请,以便它在 Outlook 或 Gmail 等客户端中呈现为实际邀请(带有接受/拒绝按钮),而不仅仅是作为附件文件。

我花了几天时间研究这个问题(数十个 Stackoverflow 问题、RFC -5545RFC-2446iCalendar规范摘录、Sendgrid 的 GitHub 问题线程:1、2、3 、 SendGrid文档、源等)。

然而,似乎没有答案(或者我错过了什么?)。


到目前为止我发现Content-Type附件在这里非常重要,尤其是method=REQUEST部分。甚至文件中属性的顺序也会有所不同

尽管这里有很多关于 SO 的问题,但由于某种原因,大多数问题仍然没有得到解答。


这是我设置attachment对象的方法:

const SendGrid = require("@sendgrid/mail");

  const attachment = {
    filename: 'invite.ics',
    name: 'invite.ics',
    content: Buffer.from(data).toString('base64'),
    disposition: 'attachment',
    contentId: uuid(),
    type: 'application/ics'
  };

SendGrid.send({
      attachments: [attachment],
      templateId,
      from: {
        email: config.emailSender,
        name: config.emailName,
      },
      to: user.email,
      dynamicTemplateData: {
        ...rest,
        user,
      }, …
Run Code Online (Sandbox Code Playgroud)

icalendar outlook gmail sendgrid sendgrid-api-v3

17
推荐指数
2
解决办法
1万
查看次数

通过 SendGrid API 更新 SendGrid 联系人自定义字段。为什么这不起作用?

我正在尝试更新我的 SendGrid 联系人,但无法弄清楚为什么我尝试更新联系人的自定义字段不起作用。我的保留字段(名字、姓氏、电子邮件)会更新,但我的自定义字段不会更新。有什么想法吗?

此处的文档:https ://sendgrid.api-docs.io/v3.0/contacts/add-or-update-a-contact

    try:
        headers = {
            'authorization': f"Bearer {settings.SENDGRID_API_KEY}",
        }
        data = {
            "list_ids": [
                # "Users" list
                "7c2...d20"
            ],
            "contacts": [{
                "email": user.email,
                "first_name": user.first_name,
                "last_name": user.last_name,
                "custom_fields": {
                    "educator_role": user.educator_role,
                }
            }]
        }

        response = requests.put("https://api.sendgrid.com/v3/marketing/contacts", headers=headers, data=json.dumps(data))
        if(response.status_code != 202):
            capture_message(f"Could not add user with email {user.email} to Sendgrid.", level="error")
    except:
        capture_message(f"Adding/updating SendGrid contact failed for {user.email}.", level="error")```
Run Code Online (Sandbox Code Playgroud)

sendgrid sendgrid-api-v3

15
推荐指数
1
解决办法
4272
查看次数

通过带有“&”的 sendgrid 发送模板电子邮件时出现警告

我正在 sendgrid api v3 的帮助下发送电子邮件,但收到警告/错误:

包含字符 '、" 或 & 的内容可能需要使用三个括号 {{{ content }}} 进行转义

在我的 api json 中,我添加了一个包含该&字符的链接:

{"dynamic_template_data": {"link":"...&..."}}

在我的模板中,我使用三个括号{{{ link }}}

一切都按预期进行 - 电子邮件,包括。链接已发送 - 但我总是收到警告/错误。

我错过了 json 中的某些内容吗?

sendgrid sendgrid-api-v3 sendgrid-templates

11
推荐指数
1
解决办法
4198
查看次数

有没有办法通过 SendGrid API 调用检索动态模板生成的 HTML 电子邮件正文?

我们有一个站点,我们的代理输入一些数据,然后该数据通过 SendGrid 动态模板发送到客户端。

电子邮件内容包含大量基于输入数据的计算,因此我们希望我们的代理能够在将其发送给客户之前先预览电子邮件并验证内容。

有没有办法使用 SendGrid API 使用 json 对象发送请求,而不是将电子邮件发送给客户端,而是接收生成的电子邮件正文,以便我们可以将其显示给代理并让他们先查看?

sendgrid sendgrid-api-v3 sendgrid-templates

11
推荐指数
1
解决办法
5066
查看次数

SendGrid开发环境

SendGrid开发QA环境的最佳方法是什么?我们希望非生产环境能够通过API存储和测试我们的电子邮件模板.SendGrid沙箱设置不允许实际发送电子邮件.

除非有更好的方法,否则我们计划以每月9.95美元的价格创建新的SendGrid基本帐户,允许最多40K的电子邮件.使用这种方法,我们的Dev和QA环境将拥有我们可以测试和部署的不同帐户.

sendgrid sendgrid-api-v3

10
推荐指数
1
解决办法
472
查看次数

如何在 JavaScript 中将动态数据 (HTML) 插入 SendGrid 模板

我希望使用SendGrid模板发送电子邮件。我使用标准 v3 api 和简单的 axios 调用。

我希望使用模板发送电子邮件。邮件应包含许多行和列。我不知道创建模板时会有多少行/列。行/列数将取决于仅在撰写电子邮件时已知的数据。

在我的代码中我希望:

  1. 使用 HTML 或其他推荐的方法收集数据并组成任意数量的行/列。
  2. 使用模板撰写消息,并使用“个性化/动态_模板_数据”或任何其他推荐的方法将 (1) 中的 HTML 插入到模板中。
  3. 发送电子邮件。
  4. 我希望电子邮件将我的 HTML 行/列视为 HTML。

我的代码(不起作用 - 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)

javascript sendgrid-api-v3 sendgrid-templates

10
推荐指数
1
解决办法
1万
查看次数

Sendgrid:如何向电子邮件模板添加动态链接?

我试图在我的电子邮件模板中有一个链接,看起来像这样:

<a href={{url}}>click here</>
Run Code Online (Sandbox Code Playgroud)

上面的链接已通过添加“自定义”链接添加到“设计器”中。这个值就像我输入的 {{url}}。

我在 dynamic_template_data 中传递一个 url 值,如下所示:

const msg = {
  to: savedAdmin.email,
  from: process.env.EMAIL_ADDRESS,
  templateId: process.env.SENDGRID_NEW_ADMIN_TEMPLATE_ID,
  personalizations: [
    {
      to: [{email: savedAdmin.email}],
      dynamic_template_data: {
        name: savedAdmin.first_name,
        url: process.env.CMS_URL,
        email: savedAdmin.email,
        password: randomPassword,
      },
    },
  ],
};
Run Code Online (Sandbox Code Playgroud)

但是,当我在收件箱中收到邮件时,网址会呈现如下:

http://url9905.myweb.shop/ls/click?upn=BMmHdsRoNrbb0-2FMI-2BBVvCjpDiCceHLG5U2u5OCf29QV6iCtfuvZYId1FE95cTz9uyMY31z9fQ7iR-2BPgq-2FkquvxdAPC0oMKiLa3DRglYUSVP-2FRmYbDQ-2BdFGnczXk75K3Ym8rSodsrAy-2BfNDJwqA7RDeemPFjepjRsUdci9CA6Y0-....
Run Code Online (Sandbox Code Playgroud)

我如何让这个工作?

sendgrid sendgrid-api-v3

10
推荐指数
1
解决办法
3043
查看次数

通过 SendGrid v3 发送 HTML 内容

我使用 GO,尝试通过 sendgrid API v3 发送邮件(https://github.com/sendgrid/sendgrid-go,无需邮件助手类)。但是当我使用这段代码时:

"content": [
    {
      "type": "text/html", 
      "value": "<html><head></head><body>Hello You link <a href="http://example.com/reschedule?id=12334">Click</a></body></html>"
    }
  ], 
Run Code Online (Sandbox Code Playgroud)

我收到错误:

第400章

但这段代码可以正常工作:

"content": [
    {
      "type": "text/html", 
      "value": "<html><head></head><body>Hello!</body></html>"
    }
  ], 
Run Code Online (Sandbox Code Playgroud)

我认为特殊字符有问题,但我该如何解决它?谢谢你!

email go sendgrid sendgrid-api-v3

9
推荐指数
1
解决办法
2万
查看次数

如何通过 NodeJS 将 SendGrid API 与动态模板结合使用

我在 SendGrid 中有一个动态模板,使用 Postman 向https://api.sendgrid.com/v3/mail/send发送 POST 请求

具有以下 json:

{
    "personalizations": [{
        "to": [{
            "email": "dariusgoore@gmail.com",
            "name": "test"
        }],
        "dynamic_template_data":{
            "name":"John",
            "text": "Someone just added a new post!",
        }
    }],
    "from": {
        "email": "team@writerboards.com",
        "name": "test"
    },
    "reply_to": {
        "email": "dariusgoore@gmail.com",
        "name": "test"
    },
    "template_id": "d-c8f201dd360d40bc877da13a1a0b36b1"
}
Run Code Online (Sandbox Code Playgroud)

可以使用模板发送电子邮件。

但是,我似乎无法从 Express 发送类似的请求。

这是我调用 SendGrid 的路线(端点响应 cron 作业):

const express = require('express');
const User = require('../models/User');
const Act = require('../models/Act');
const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(process.env.SENDGRID_API_KEY);

let router = express.Router();

router.get('/', async …
Run Code Online (Sandbox Code Playgroud)

node.js express sendgrid-api-v3

9
推荐指数
2
解决办法
1万
查看次数

Sendgrid:使用模板版本支持多种语言

我想利用 Sendgrid 模板版本来支持多语言支持。

根据 Sendgrid文档

一个模板一次只能有一个活动版本。如果您创建了一个包含不同 HTML 的新版本,您希望客户开始接收该版本,则需要将该版本设为“活动”。

因此,例如我有 2 个版本的模板:English(active)Russian。因此,如果我想用俄语版本发送电子邮件,我需要在发送电子邮件之前激活俄语模板版本。

但我担心的是:如果我需要同时发送俄文和英文版本的电子邮件怎么办?Sendgrind 能否为 2 个同时请求提供合适的版本?

email sendgrid sendgrid-api-v3 sendgrid-templates

8
推荐指数
2
解决办法
5061
查看次数