使用Node.js中的AWS SES在电子邮件正文中发送超链接

时间:2020-06-14 03:33:22

标签: node.js aws-lambda amazon-ses

我在Node.js Lambda函数中使用AWS.SES(简单电子邮件服务)工具包。

我可以很好地发送电子邮件,但是如果我尝试在电子邮件中包含一个简单的超链接,则它仅显示纯文本而不是可单击的超链接。

这是我用来发送电子邮件的代码。

function sendVerificationEmail(userinfo, vKey, after) {
    var params = {
        Destination: {
            ToAddresses: [userinfo.email]
        },
        Message: {
            Body: {
                Html: {
                    Charset: "UTF-8",
                    Data: "<html><body>Hey " + userinfo.name + ", <a href='https://s3.amazonaws.com/xxxx/xxxx.html?v=" + vKey + "'>Click here to validate this email address.</a></body></html>"
                },
                Text: {
                    Charset: "UTF-8",
                    Data: "Hey " + userinfo.name + ",\n\nOpen this link in your web browser to validate this email address:\nhttps://s3.amazonaws.com/xxxx/xxxx.html?v=" + vKey
                }

            },

            Subject: { Data: "Scheduler - Verify Your Email Address" }
        },
        Source: "xxxx@gmail.com"
    };

     ses.sendEmail(params, function(err, data) {
        after(err, data);
    });
}

正如您在HTML中看到的那样,我包含了一个<a>标记。但是,该链接在电子邮件中显示为不可点击的纯文本。

编辑:Gmail的“显示原始”功能显示以下内容:

Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Hey TestName,

Open this link in your web browser to validate this email address:
https://s3.amazonaws.com/xxxx/xxxx.html?v=xxxxxxxxxxxxxxxxxxxxxxxxxxxx
---------------------------------------------------
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 7bit

<html><body>Hey TestName, <a href='https://s3.amazonaws.com/xxxx/xxxx.html?v=xxxxxxxxxxxxx'>Click here to validate this email address.</a></body></html>

1 个答案:

答案 0 :(得分:0)

如果您观察原始电子邮件内容,您会发现它错过了 = 之间的 href=<link> 符号。这是因为 '=' 符号在 smtp 协议消息中用作换行符(我认为)。 无论如何,解决这个问题的方法是为“=”符号添加 unicode,即 U+003D 试试这个:-

<a href=3D"${link}">${text}</a>

=3D 被解释为 = 符号并且内容编码正确完成。