通过 sendgrid/mail 发送时如何向我的电子邮件添加退订链接

How can I add unsubscribe links to my emails when sending via sendgrid/mail

我正在使用以下方式发送电子邮件:https://github.com/sendgrid/sendgrid-nodejs/tree/master/packages/mail

我无法找到如何添加 <a href="[Unsubscribe]">Unsubscribe</a> 等价物。这记录在此处:https://sendgrid.com/docs/Classroom/Basics/Marketing_Campaigns/unsubscribe_groups.html#-Using-a-Custom-Unsubscribe-Link

在网站上,您只需使用简码 [取消订阅],这在通过 sendgrid/mail 包发送电子邮件时不起作用。

由于您是使用代码发送的,因此它是 "transactional" 类型的消息。您需要在帐户级别打开订阅跟踪过滤器(通过 [UI](订阅跟踪设置)或 API), or turn it on as you send the message, as part of the mail/send API call,在 tracking_settings.

请务必注意,您不能将它们混用。如果您在 mail/send API 调用中定义 anything,则需要为订阅跟踪定义 everything称呼。 SendGrid 不会查看邮件级别的一些设置,以及帐户级别的一些设置。

大多数用户只会在帐户级别进行设置。在那里,您可以自定义取消订阅页脚的 HTML 和文本,自定义登录页面的 HTML,或将登录重定向到您选择的 URL,这会将收件人发送到那里在 URL 字符串中使用 ?email=test@domain.com 供您的系统捕获。您还可以像 [%unsubscribe%] 一样定义 "replacement tag",这样您就可以将 URL 放置在 HTML.

中的任意位置

最简单的方法是通过 SendGrid GUI 执行此操作。

转到设置 -> 跟踪 -> 订阅跟踪

一个可以节省我一两个小时的提示是:

可以在 api json 中连同其他内容一起发送以下内容:

  "asm":{
    "group_id":123,
    "groups_to_display": [123],
    }

然后以下变量可在模板中使用:

<%asm_group_unsubscribe_raw_url%>
<%asm_preferences_raw_url%>

如果您想保持简单,请不要包含以下变量,因为它会弄乱太多东西(这在 documentation 中并不明显,所以显然我这样做是浪费时间:( ) :

  "tracking_settings": {
    "subscription_tracking": {
      "enable": true,
      "substitution_tag": "[unsubscribe_url]"
    }
  }

只需以原始格式使用它们就可以了。

最好的方法是使用群组取消订阅。

  1. 首先在Sendgrid中创建一个组:
  • 群组 > 取消订阅群组 > 创建群组
  1. 接下来,将模块插入到 Sendgrid 模板中,在您的电子邮件中创建特定标签,这些标签会在您发出 API 请求时填充
  • 转到您的模板
  • 在 HTML 块中插入取消订阅模块
  • 保存

  1. 最后提出API请求并指定在步骤1中创建的组:
     "asm":{
        "group_id":544,
        "groups_to_display": [544, 788],
     }
  1. 这些将在发送电子邮件时插入到步骤 2 中提到的模块中。

不幸的是,Sendgrid 退订链接并不像它们应该的那样简单。它们有更详细的解释 here

  1. https://app.sendgrid.com/ > 抑制 > 退订群组 > 创建新群组

  2. 记下 group_id/ids。例如 123(只有数字!不是字符串)

  3. 使用 node.js

    发送电子邮件

const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(SENDGRID_API_KEY);


const tags = { invitedBy : Alex }
const msg = {
            to: email,
            from: { "email": SENDER_EMAIL, 
                    "name": SENDER_NAME 
                  },
            templateId: TEMPLATE_ID,
            dynamic_template_data: {
                Sender_Name: name,
                ...tags
            },
            asm: {
                group_id: 123,
                groups_to_display: [
                    123
                ],
            },
        };


await sgMail.send(msg);