如何利用Node发送邮件

使用Nodemailer发送邮件

最近在作用户注册的功能,有这样的需求:用户填完信息点击注册后,服务器要发给用户注册邮箱一个激活连接来激活帐户,后端用Node写的,第一次作后端发送邮件的功能,折腾了半天,终于实现了,哈哈。html

关于Node生态下发送邮件的插件也有不少,我用的比较主流的Nodemailer来作的。若是要用SMTP协议的话还要引入Nodemailer的一个模块nodemailer-smtp-transportnode

Nodemailer官网npm

首先新建一个文件夹,cd到这个文件夹后端

安装 Nodemailernodemailer-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中的namepassui

下面我试验了两种邮箱,QQ邮箱 阿里的企业邮箱阿里云

QQ邮箱

查看了QQ邮箱的帮助中心 得知
hostsmtp.qq.com
port465
user 是你要发送邮件的邮箱
pass 须要开启邮箱的SMTP
功能,开启方法在QQ邮箱帮助中心插件

开启的时候他会发送给你一串英文,这个就是咱们须要的pass

到这个地方就能够测试一下了!

到终端执行
node test.js
能够看到打印的日志,若是显示OK,那就快去接收的邮箱里看看有没有邮件了

阿里企业邮箱

注意这里是企业邮箱,由于我在阿里云上买的域名,送的企业邮箱,因此想着试一试。

他的帮助文档里也能够查到
hostsmtpdm.aliyun.com
port25
user 是你要发送邮件的邮箱
pass 的获取须要配置一下邮箱,使用 SMTP 发送邮件

若是没有发信域名须要自行新建域名,新建完成后配置域名,连接

而后验证发信域名,验证成功后,点击发信地址 点击设置SMTP密码(注意:这里必需要设置SMTP密码,不然仍是没有开启成功)

pass就是你刚刚输入的SMTP密码

快去测试一下吧~

相关文章
相关标签/搜索