常用的发邮件方式有三种:
(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即可发送邮件了