第三方模块和第三方模块类似,第三方模块一般也是个人写的,只不过可以公开被别人使用。
其实就是一个npm插件。
去这里下载:https://www.npmjs.com
搜索nodemailer
nodemailer帮助文档https://nodemailer.com/about/
- 安装nodemailer:
npm install nodemailer
查找各种邮箱用的端口号的文件:\node_modules\nodemailer\lib\well-known\services.json
比如查qq
qq邮箱设置smtp开启
开启的时候需要验证码,用收集发个短信:
执行该js文件,则会发邮件,代码如下:
'use strict';
const nodemailer = require('nodemailer');
// 创建发送邮件的请求对象
let transporter = nodemailer.createTransport({
host: 'smtp.qq.com', // 发送方邮箱
port: 465, // 端口号
secure: true, // true for 465, false for other ports
auth: {
user: '2495730727@qq.com', // 发送方邮箱地址
pass: 'rwjmlzsgjqvoeafe' // smtp验证码
}
});
// 邮件信息
let mailobj = {
from: '"Fred Foo 👻" <2495730xxx@qq.com>', // 发件人
to: 'songxxxx@xxxx.com.cn, gengxxxx2016@163.com', // 收件人
subject: 'Hello ✔', // 邮件主题
text: 'Hello hello hello hello', // 邮件正文,必须是字符串
// html: '<b>Hello world?</b>' // 邮件正文
}
// 发送邮件
transporter.sendMail(mailobj);
text和html只能选择其中一个发送。
那我怎么知道我有没有发送成功呢???
当然是通过回调函数实现啦!!!
将上面的代码的最后一行稍微改动下:
transporter.sendMail(mailobj,(err,data)=>{
console.log(err);
console.log(data);
});
执行
把上述发邮件功能模块化
方法一
- mail.js
function send(mail,code){
'use strict';
const nodemailer = require('nodemailer');
// 创建发送邮件的请求对象
let transporter = nodemailer.createTransport({
host: 'smtp.qq.com', // 发送方邮箱
port: 465, // 端口号
secure: true, // true for 465, false for other ports
auth: {
user: '2495730xxx@qq.com', // 发送方邮箱地址
pass: 'rwjmlzsgjqvoeafe' // smtp验证码
}
});
// 邮件信息
let mailobj = {
from: '"小花生👻" <2495730xxx@qq.com>', // 发件人
to: mail, // 收件人
subject: 'Hello ✔', // 邮件主题
text: `您的验证码是${code}`, // 邮件正文
// html: '<b>Hello world?</b>' // 邮件正文
}
// 发送邮件
transporter.sendMail(mailobj,(err,data)=>{
console.log(err);
console.log(data);
});
}
module.exports=send
// send('gengsong2016@163.com,songgeng@cslc.com.cn','123456');
- 程序调用方法
const sendmail=require('../utils/mail')
sendmail('gengsong2016@163.com,songgeng@cslc.com.cn','123456');
方法二
- mail.js
"use strict";
const nodemailer = require("nodemailer");
// 创建发送邮件的对象
let transporter = nodemailer.createTransport({
host: "smtp.qq.com",//发送方邮箱 qq 通过lib/well-know/service.json
port: 465, //端口号
secure: true, // true for 465, false for other ports
auth: {
user: '352186537@qq.com', // 发送方的邮箱地址
pass: 'kxlfqavqcooabgfd' // smtp 验证码
}
});
function send(mail,code){
// 邮件信息
let mailobj={
from: '"今天天气不错" <352186537@qq.com>', // sender address
to: mail, // list of receivers
subject: "1902", // Subject line
text: `您的验证码是${code},有效期五分钟`, // plain text body
//html: "<b>Hello world?</b>" // html body
}
return new Promise((resolve,reject)=>{
transporter.sendMail(mailobj,(err,data)=>{
// console.log(err)
// console.log(data)
if(err){
reject()
}else{
resolve()
}
});
})
}
// 抛出对象
module.exports={send}
- 程序调用对象中的方法
const Mail=require('../utils/mail')
Mail.send(mail,code)
网友评论