javascript - Sendgrid 动态模板从 anchor 标记中剥离 HREF

标签 javascript html sendgrid sendgrid-api-v3 sendgrid-templates

我有一个动态电子邮件模板,用于向用户发送唯一的 token 链接以重置其密码。我将链接分配给请求对象中个性化的dynamic_template_data 部分中名为“link”的字段。当我收到电子邮件时,我的 anchor 标记没有 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
      }

以及我的 sendgrid 动态模板中的 html:

<div>Use the following link to reset your password: <a href="{{link}}">{{link}}</a></div>

当我收到电子邮件时,链接的文本已正确填充我的动态内容,但该元素没有 href 属性,因此它呈现为纯文本且不可点击:

enter image description here

特别奇怪的是,当我在 SendGrid 的设计编辑器上预览动态模板时,href 字段会正确填充我传入的测试数据。

最佳答案

经过与 SendGrid 支持的反复讨论后,我设法找到了问题。

因为我一直在本地环境中开发此功能,所以我在请求正文中包含的链接指向我的本地主机。我的链接变量定义如下:

  link = "localhost:8080/#/resetPassword/" + token;

作为测试,我将链接更改为以下内容并且它有效:

link = "https://google.com"

这让我怀疑是缺少 http 协议(protocol)导致了这个问题。将其更改为以下内容解决了问题:

  link = "http://localhost:8080/#/resetPassword/" + token;

我假设这是 anchor 标记元素本身的一个怪癖,尽管我不太了解该机制,因此如果有人可以为我详细说明这一点,我将不胜感激。

关于javascript - Sendgrid 动态模板从 anchor 标记中剥离 HREF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59633238/

相关文章:

javascript - 输入最大值等于 javascript 变量

html - 如何让 css 渐变在这么多像素后停止?

html - 添加边距使最后一列成为新行

SendGrid - 即使我使用 setTemplateId,setHtml 或 setText 也是必需的吗?

javascript - 从下拉列表中获取值以显示表nodejs

javascript - useState react hook不设置数组状态

java - 使用 Sendgrid 发送给多个收件人

django - 尝试使用 Django send_mail 和 SendGrid 发送电子邮件

javascript - 什么样的二进制数据不能字符串化为 JSON?

javascript - 纯 JavaScript 中基于 URL 的单页应用程序导航?