使用 Mailtrap.io 在您的 Node/Express 应用中测试电子邮件
几乎所有软件应用都具备电子邮件功能,因为它是与用户联系和沟通最可靠的方式之一。许多电子邮件发送服务让开发此类功能变得轻而易举,例如Sendgrid、Postmark、Mailgun和Sparkpost。我最喜欢的是 Sendgrid。:)
总之,在预生产阶段开发电子邮件功能时最常见的问题是垃圾邮件,因为在使用上述任何电子邮件发送服务时,您肯定都会使用真实的电子邮件地址。因此,进行沙箱测试是必要的。
Mailtrap应运而生。Mailtrap 是由Railsware开发的模拟 SMTP 服务器,非常适合生产环境前的测试。理想情况下,你应该使用 Mailtrap 之类的服务进行邮件测试,然后在正式上线时切换到 SendGrid 等其他服务。
在这个简短的示例中,我将向您展示如何在 Node 中进行沙盒邮件测试。如果您想跟着操作,请从 GitHub 下载或克隆该项目。在终端中打开该项目,并使用 `npm install` 安装所需的 npm 包npm install。安装完成后,cd进入 start 文件夹,并使用您喜欢的编辑器打开文件。如果您还没有注册Mailtrapapp.js帐户,请访问该网站并创建一个免费帐户。创建完成后,导航到收件箱,您应该可以看到您的 SMTP 和 POP3 凭据。
我们将使用nodemailer模块来发送邮件。让我们创建一个nodemailer SMTP传输器并对其进行配置。
//Start Here
const transporter = nodemailer.createTransport({
host: "smtp.mailtrap.io",
port: 2525,
auth: {
user: "MAILTRAP_SMTP_USERNAME",
pass: "MAILTRAP_SMTP_PASSWORD"
}
});
现在,让我们来设置消息选项:
const mailOptions= {
from: '"Test Server" <test@example.com>',
to: req.body.email,
subject: "Email Test",
text: "This is an email test using Mailtrap.io"
};
sendMail()然后我们使用传输对象的方法发送消息:
transporter.sendMail(mailOptions, (err, info) => {
if(err){
console.log(err);
return next(err);
}
console.log("Info: ", info);
res.json({
message: "Email successfully sent."
});
});
让我们测试一下是否有效。输入命令启动服务器node app.js。现在我们向发送一个 POST 请求http://localhost:8001/email。我将使用cURL。您可以使用Postman或任何您选择的 REST 客户端。
curl -X POST -H "Content-Type:application/json" -d "{"""email""":"""johndoe@gmail.com"""}" http://localhost:8001/email
希望您能收到类似下面的响应,这表示代码运行正常:
{"message":"Email successfully sent."}
让我们通过检查邮件陷阱收件箱来确认是否如此。
如您所见,Mailtrap 可以让您轻松测试发送电子邮件的功能,正如上文所述。本示例中使用的 Node.js 应用通过Nodemailer发送电子邮件,但还有其他传输方式和电子邮件软件包可供选择。如果您正在寻找 Nodemailer 的替代方案,请参阅这篇文章:使用 Node.js 发送电子邮件。这篇文章深入探讨了一些面向电子邮件的软件包,例如Email.js,以及如何使用 Gmail 从您的 Node.js 应用发送邮件。
祝您编程愉快!
文章来源:https://dev.to/kwabenberko/test-emails-in-your-nodeexpress-apps-using-mailtrapio-b32


