node.js - 如何使用 Sendgrid 和 Node.js 发送 localhost 链接

标签 node.js templates html-email sendgrid

我想使用 sendgrid 和 node.js 发送电子邮件以添加电子邮件验证功能。我在 sendgrid 仪表板中设置了一个事务模板,但我不知道如何将 url 插入到我的 html 中(在内部我知道他们为此使用了 Handlebars )。模板看起来像(仅重要部分):

模板

<a target='_blank' href="{{verificationLink}}" class='link2' style="color:#474747">Verify Email Address</a>

我为动态 Prop 添加了 {{verificationLink}} ,我的 Node 请求如下所示:

Node.js 代码

public async sendEmailVerificationLink(data: any) {
    const {firstName, email} = data;
    const token = Math.random().toString(36).substr(2);
    const message: MailData = {
        from: EmailCreator.EMAIL_FROM,
        personalizations: [{
            to: [{
                email,
            }],
            dynamicTemplateData: {
                "firstName": firstName,
                "verificationLink": `http://localhost:4200/verify-email?token=${token}`
            },
        }],
        templateId: 'd-8ca7682e287d47428c351e7854d98567'
    };

    return sendgridMail.send(message);
}

但是当我收到电子邮件时,链接如下所示:

enter image description here

最佳答案

sendgrid 的一项功能是跟踪您嵌入在消息中的链接的点击率。那个长 URL 就是点击跟踪器:它从他们的服务器跳到您的服务器。

对于电子邮件验证,您不希望进行此类跟踪。当我使用 sendgrid 执行此类操作时,我不使用它们的模板功能,而只是在告诉 sendgrid 逐字发送之前在程序中格式化消息。

您也可以告诉它您不想跟踪该链接或整个模板。我不知道该怎么做,抱歉。

关于node.js - 如何使用 Sendgrid 和 Node.js 发送 localhost 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59335428/

相关文章:

node.js - 将数据发送到渲染器进程

javascript - JS - 未处理的 promise

c++ - 如何转发声明应该属于一个类的模板化类型?

django - 为什么 Django 不会自动转义我的 &lt;script&gt; 标签?

android - HTML 电子邮件通讯不响应/按比例缩小以适应 Android 4.4 上的屏幕(适用于其他移动客户端)

c# - 如何在nlog中发送彩色邮件

node.js - 在 vuejs 2 组件中导入 css/js 文件时出现问题

node.js - Alexa:发射在功能链中不起作用

c++ - 类模板构造函数中引用的未解析外部符号(在 VS 2008 中)

php - 覆盖 joomla 核心电子邮件模板