一、背景
由于本人最近打算使用Typescript来重构一下自己的个人博客,所以就开始折腾了,但是由于之前博客的登录注册是没有配置验证码验证机制的,当然没有配置的主要原因是自己当时太菜了。由于经过了社会的考验,对于自己的技术也有所增长,所以开始折腾一下验证码机制,而验证码机制这个我们下次讨论。这次就先说说邮件服务。
二、技术选择
由于本人对于node有所涉及,所以这里选择node来进行邮件服务的配置。对于一个合格的前端来说,对于此类的问题肯定是回到npm上寻找有没有相关的包。我这里所选择的是nodemailer这个包
三、nodemailer说明
nodemailer 是一个简单易用的 Node.JS 邮件发送模块(通过 SMTP,sendmail,或者 Amazon SES),支持 unicode,你可以使用任何你喜欢的字符集。
功能
- 零依赖性的单个模块–由于没有死角,因此代码易于审核
- 高度重视安全性,没有人喜欢RCE漏洞
- Unicode支持使用任何字符,包括表情符号
- Windows支持 –您可以使用npm在Windows上,就像其他模块一样,没有编译的依赖项。从Azure或Windows盒子免费使用它
- 使用HTML内容以及纯文本替代
- 加 附件 到消息
- 嵌入式的 HTML内容的图像附件–您的设计不会被阻塞
- 使用TLS / STARTTLS的安全电子邮件传递
- 不同 运输方式 除了内置 SMTP支持
- 与签署消息 DKIM
- 自订 插件支持 用于处理消息
- 桑 OAuth2 认证方式
- 代理人 用于SMTP连接
- ES6码 -没有更多的无意内存泄漏,由于吊装VAR的
- 来自的自动生成的电子邮件测试帐户电子邮件
四、开始使用
4.1下载
npm install nodemailer
4.2 基本配置
// 创建邮件服务
let transporter = nodemailer.createTransport({
host: "127.0.0.1", // 发送邮件的主机ip
port: 465, // 端口号
secure: false, // true for 465, false for other ports
auth: { //发送者相关配置
user: '', // 作者邮箱
pass: "", // 邮箱密码
},
});
// 邮件内容
let info = await transporter.sendMail({
from: '"认证邮件" <作者邮箱>', // 邮件弹框提示
to: config.email, // 目标邮箱
subject: `您好{config.user}, 欢迎注册风雅个人博客`, // 邮件标题
text: `您的注册码是{config.code}, 有效期为15分钟,请注意及时使用`, // 标题说明
html: `
<div style="border: 1px solid #dcdcdc;color: #676767;width: 600px; margin: 0 auto; padding-bottom: 50px;position: relative;">
<div style="height: 60px; background: #393d49; line-height: 60px; color: #58a36f; font-size: 18px;padding-left: 10px;">风雅个人博客——欢迎来到官方社区</div>
<div style="padding: 25px">
<div>您好{config.user}, 欢迎注册风雅个人博客,您的注册码是<span style="color:#1890ff">{config.code}</span>, 有效期为15分钟,请注意及时使用</div>
<div style="padding: 5px; background: #f2f2f2;">如果该邮件不是由你本人操作,请勿进行激活!否则你的邮箱将会被他人绑定。</div>
</div>
<div style="background: #fafafa; color: #b4b4b4;text-align: center; line-height: 45px; height: 45px; position: absolute; left: 0; bottom: 0;width: 100%;">系统邮件,请勿直接回复</div>
</div>`, //邮件内容
});
console.log("Message sent: %s", info.messageId);
// Message sent: <[email protected]>
// Preview only available when sending through an Ethereal account
console.log("Preview URL: %s", nodemailer.getTestMessageUrl(info));