![](/img/trans.png)
[英]Cannot send email using AWS SES via Node.js app running on EC2 instance
[英]Send hyperlinks in email body using AWS SES in Node.js
我在我的 Node.js Lambda ZC1C425268E68385D1ABZA47 中使用 AWS.SES(简单的 email 服务)套件。
我可以很好地发送电子邮件,但如果我尝试在 email 中包含一个简单的超链接,它只会显示纯文本而不是可点击的超链接。
这是我用来发送 email 的代码。
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>
标记。 但是,该链接在 email 中显示为不可点击的纯文本。
编辑: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>
如果您观察原始 email 内容,您会发现它错过了href=<link>
之间的=
符号。 这是因为 '=' 符号在 smtp 协议消息中用作换行符(我认为)。 无论如何,解决这个问题的方法是为 U+003D 的“=”符号添加 unicode 试试这个:-
<a href=3D"${link}">${text}</a>
=3D
被解释为=
符号并且内容编码正确完成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.