最近在作用户注册的功能,有这样的需求:用户填完信息点击注册后,服务器要发给用户注册邮箱一个激活连接来激活帐户,后端用Node写的,第一次作后端发送邮件的功能,折腾了半天,终于实现了,哈哈。html
关于Node生态下发送邮件的插件也有不少,我用的比较主流的Nodemailer
来作的。若是要用SMTP协议的话还要引入Nodemailer
的一个模块nodemailer-smtp-transport
node
Nodemailer官网npm
首先新建一个文件夹,cd到这个文件夹后端
安装 Nodemailer
和 nodemailer-smtp-transport
服务器
npm i nodemailer nodemailer-smtp-transport --save
框架
在文件根目录下新建test.js
文件,结合官网给的的例子,咱们先搭建一个简单的例子测试
//test.js const nodemailer = require('nodemailer') const smtpTransport = require('nodemailer-smtp-transport') // 1. 建立 const transport = nodemailer.createTransport(smtpTransport({ host: 'xxx.com', //查看发送邮件的邮箱开放的host port: xx, //查看发送邮件的邮箱开放的port secureConnection: true, //使用 SSL auth: { user: 'xxx@xxx.com', //发送邮件的邮箱 pass: 'xxxxxx' //发送邮件的邮箱的密钥 } })); // 2. 邮件的具体信息 const mailOptions = { from: '"小明" <xxx@xxx.com>', //发送邮件的邮箱,与上面 user 相同 to: 'xxx@xxx.com', //接收邮件的邮箱,若有多个,用逗号隔开 subject: '这是一封测试邮件', //邮件标题 html: '<p> 这是一封用nodejs的nodemailer发送的测试邮件。</p>' //邮件内容,能够为html }; // 3. 发送邮件 transport.sendMail(mailOptions, function(error, info){ if(error){ console.log(error); }else{ console.log('Message sent: ' + info.response); } });
这样基本的框架都搭好了,其实重要的是在建立时,如何获取到 host
port
以及 user
中的name
和pass
ui
下面我试验了两种邮箱,QQ邮箱 阿里的企业邮箱阿里云
查看了QQ邮箱的帮助中心 得知 host
为 smtp.qq.com
port
为 465
user
是你要发送邮件的邮箱pass
须要开启邮箱的SMTP
功能,开启方法在QQ邮箱帮助中心有插件
开启的时候他会发送给你一串英文,这个就是咱们须要的pass
到这个地方就能够测试一下了!
到终端执行node test.js
能够看到打印的日志,若是显示OK,那就快去接收的邮箱里看看有没有邮件了
注意这里是企业邮箱,由于我在阿里云上买的域名,送的企业邮箱,因此想着试一试。
他的帮助文档里也能够查到host
为 smtpdm.aliyun.com
port
为 25
user
是你要发送邮件的邮箱pass
的获取须要配置一下邮箱,使用 SMTP 发送邮件
若是没有发信域名须要自行新建域名,新建完成后配置域名,连接
而后验证发信域名,验证成功后,点击发信地址
点击设置SMTP密码
(注意:这里必需要设置SMTP密码,不然仍是没有开启成功)
pass
就是你刚刚输入的SMTP密码
快去测试一下吧~