node使用nodemailer发送邮件

 0 0条评论

先安装

    npm install nodemailer --save

modules文件夹创建mail.js,引入模块,导出方法。主要是4个参数

from:发件人通常格式是'"名字"<邮箱地址>',这样在发件人这里就会显示你的名字,如果不填写名字,那只会显示你邮箱的地址,非常不友好,

to:收件人

subject:邮件标题

html:邮件正文,支持html,具体代码如下:

    const nodemailer = require('nodemailer')    exports.send = async (to, subject, html) => {        // 发送邮箱的地址
        let from = 'system@shuanghei.com'        // 根据实际需求是否添加后缀
        html = html + '<p>此邮件为系统自动发送,请勿回复</p>'
        let transporter = nodemailer.createTransport({            // smtp地址,我用的是阿里云如下
            host: 'smtp.qiye.aliyun.com',
            port: 465, // SMTP 端口
            secureConnection: true, // 使用了 SSL            // 这里是邮箱地址和密码
            auth: {
                user: 'system@shuanghei.com', //发送的邮箱
                // 密码,我保存在配置文件里了
                pass: global.config.mail_key
            }
        })
        let info = transporter.sendMail({ from, to, subject, html })
        return info
    }

在需要发送邮箱的地方直接引用此module,我的代码如下:

    const express = require('express')
    const mail = require('../../modules/mail')    // 邮箱地址的正则
    const Email = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/
    //创建路由对象
    const MailRouter = express.Router()

    MailRouter.post('', async (req, res, next) => {
        try {
            let { to, subject, html } = req.body
            if (!Email.test(to)) {
                // 收件人不正确错误处理
            } else {
            let info = await mail.send(to, subject, html)
             res.json('发送成功')
            }
        } catch (e) {
            // 错误处理
        }
    })
    module.exports = MailRouter


本文作者:双黑

版权声明:本站文章欢迎链接分享,禁止全文转载!

游客