先安装
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