使用nodemailer邮件发送验证码

记录一下实践nodemailer发送验证码的过程;
首先参考官方文档,了解nodemailer
这里我参考的是这篇文章。内容很详细,就不怎么具体
核心代码:

/*
*
* email 邮件模块
*
*/

const nodemailer = require('nodemailer');
const smtpTransport = require('nodemailer-smtp-transport');
const config = require('../config')

const transporter = nodemailer.createTransport(smtpTransport({
    host: 'smtp.qq.com',//代理商,这里写的qq的
    secure: true,
    port: 465,
    auth: {
        user: config.email.account,//授权邮箱
        pass: config.email.password//// 这里密码不是qq密码,是你设置的smtp授权码
    }
}));

let clientIsValid = false;
const verifyClient = () => {
    transporter.verify((error, success) => {
        if (error) {
            clientIsValid = false;
            console.warn('邮件客户端初始化连接失败,将在一小时后重试');
            setTimeout(verifyClient, 1000 * 60 * 60);
        } else {
            clientIsValid = true;
            console.log('邮件客户端初始化连接成功,随时可发送邮件');
        }
    });
};
verifyClient();

const sendMail = mailOptions => {
    if (!clientIsValid) {
        console.warn('由于未初始化成功,邮件客户端发送被拒绝');
        return false;
    }
    mailOptions.from = '"ShineTomorrow" '
    transporter.sendMail(mailOptions, (error, info) => {
        if (error) return console.warn('邮件发送失败', error);
        console.log('邮件发送成功', info.messageId, info.response);
    });
};

exports.sendMail = sendMail;

介绍如何使用的了,记录一下遇到的问题:
1.首先应该给授权邮箱开通SMTP服务,百度如何开通。这里有个qq开通的教程;
2.将运营商提供的授权码保存下来;
3.要注意mailOptions中的email要与授权邮箱一致,否则会报501error。

你可能感兴趣的:(node)