node.js + nodemailer发送邮件功能并实现

1,562 阅读2分钟

常用的发邮件方式有三种:

(1)调用本地客户端:<a href="mailto:xxxx@xx.com>subject=xxxxx">发送邮件</a>
(2)通过formspaceio转发:收费的
   官网参考地址:https://formspree.io/plans
(3)使用nodemailer插件,官网参考地址:https://nodemailer.com

本文将的为如果使用nodemailer组件与vue项目结合是想发邮件功能

准备工作

因nodemailer是基于node服务的,所以需安装node.js版本>=8以上。

搭建后端服务

安装好node.js以后开始搭建后端服务:参考官网https://www.expressjs.com.cn/
(1)安装express-generator

    npx express-generator  // node.js>=8.2
    npm install -g express-generator // 老版本使用

(2)初始化项目:

    express --view=pug myapp
    cd myapp
    npm install

初始化完成后的代码结构如下图:

代码结构

  • myapp/package.json ---依赖文件
  • myapp/app.js --- 程序主文件
  • myapp/public ---静态文件
  • myapp/routes --- 路由文件
  • myapp/views --- 源码
  • myapp/bin/www --- 程序入口文件

(3)编译

    # 编译
    npm start

(4)开发
router/index.js文件中增加发送邮件监听

var express = require('express');
var router = express.Router();
const nodemailer = require('../controller/nodemailer')

// 监听发送邮件的请求
router.post('/mail/send', nodemailer.sendmail)

module.exports = router;

增加controller文件夹,文件夹下存放发送邮件逻辑处理

var nodemailer = require('nodemailer')

exports.sendmail = function(req, res, next) {
 // 邮件发送
 const transporter = nodemailer.createTransport({
   host: 'smtp.exmail.qq.com',
   port: 465,
   secure: true,
   auth: {
     user: '', // 你的邮箱账号
     pass: // 你的邮箱授权码
   }
 })
 const sendContent = ''
 var mailOptions = {
   from: '', // sender address
   to: '', // list of receivers
   subject: '测试邮件', // Subject line
   text: 'Nodejs之邮件发送', // plaintext body
   html: '<h2>欢迎关注我的GitHub,一起学习Nodejs。https://github.com/Chen-xy</h2>'
 }

 transporter.sendMail(mailOptions, function(error, info) {
   if (!error) {
     return res.send("success");
   } else {
     return res.send('error')
   }
 })
}

查看node服务的监听端口配置前端访问代理

查看 bin/www 文件下该行代码
var port = normalizePort(process.env.PORT || 3000);
app.set('port', port);
即该项目监听端口为3000

这样整个后端服务就搭建完成了
前端代发送邮件代码到localhost:3000,发送邮件接口localhost:3000/mail/send即可发送邮件了