实现个人邮箱发送邮件服务
1.搭建基础的nodemailer服务。
1.新建nodemail文件夹 , 新建index.js
2.npm init
3.npm install nodemailer
安装了nodemailer之后我们去看一下nodemailer的官方文档。这里附上链接: [nodemailer.com/about/][1]
Nodemailer中用于传递邮件的主要传输方式是SMTP。关于SMTP邮件传输协议,各位有兴趣可以搜索了解一下。这里我们按照官方文档的SMTP发送邮件的方式完成一个小的邮件服务。
2.打开官方文档我们看一下SMTP的测试实例(这里是SMTP的两种连接模式 单连接与池连接)
1.单连接 :每封邮件都会占用一条连接,相当于每发一次邮件就创建一条新的连接,完成时关闭。
2.池连接:并不会为每封邮件都创建连接,它是以一个固定数量的连接持续打开的,池连接接受三个参数:开启池连接可以有效降低服务器发送邮件的开销(因为单连接每次都创建销毁连接)
pool: 设置为true时开启池连接,默认为false
maxConnections: 参数为数字,同时存在的连接数(这个也可以表示为并行的连接)默认为5
maxMessages:单个连接发送的最大消息数量(默认为100)也可以设置为infinity (无上限)
3.这里我们使用单连接做一个测试:(下面是代码以及常用的参数介绍)
const nodemailer = require("nodemailer") //引入我们的nodemailer
let transporter = nodemailer.createTransport({
host:'smtp.163.com',//使用内置的163发送邮件
port:587,
secure:false,
auth: {
user: "xxxxxxxx",
pass: "xxxxxxxx",
},
})
createTransport方法接收一个参数对象。最常用的参数主要是四个:
host:我们需要用到的邮件服务主机或者ip。这里我们使用的是网易的邮箱。所以主机名smtp.163.com。
secure:是否使用tls加密。默认为false,当我们设置为true时,建议端口设置为465
port:端口号这里官方文档有说明,默认情况下为587,如果设置secure为true时则默认为465.
auth:使用我们自己的邮箱需要开启smtp服务,auth的user 与 pass分别对应了我们的邮箱号与邮箱授权码
//所以我们下面这种写法也没问题(secure与port都有默认值),不使用tls加密按照默认值传输
const nodemailer = require("nodemailer")
let transporter = nodemailer.createTransport({
host: "smtp.163.com", //使用内置的163发送邮件
auth: { user: "xxxxxxxx", pass: "xxxxxxxx" },
})
4.如何去获取auth(这里介绍网易和qq邮箱设置SMTP服务)
打开网易邮箱的设置找到这一行
选择开启pop3/smtp服务,你会得到一串授权码类似于这种SJPLBCHBKHIIQCLF。
qq邮箱打开找到账户这里。同样是开启pop3/smtp服务拿到授权码
//qq邮箱
let transporter = nodemailer.createTransport({
host:'smtp.qq.com'//qq
auth:{
user:'你的qq邮箱'
pass:"qq邮箱授权码"
}
})
//网易邮箱
let transporter = nodemailer.createTransport({
host:'smtp.qq.com'//qq
auth:{
user:'你的网易邮箱'
pass:"网易邮箱授权码"
}
})
5.现在我们来验证邮箱是否正常,以及发送测试邮件。执行可以看到邮件服务器正常。
//验证邮箱服务器
// 邮件服务器准备
transporter.verify(function (error, success) {
if (error) {
console.log(error)
}else{
console.log('email is ready')
}
})
6.发送测试邮件
sendMail方法
senMail接受的参数还可以添加html,图片等等。详细内容可以查看官方文档。
transporter.sendMail({
from:'你的邮箱',
to:'你要发送的邮箱',
subject:'你的标题',
text:`你的文字内容`,
})
Js中文网 – 前端进阶资源教程 www.javascriptC.com,typescript 中文文档
Javascript中文网是以前端进阶资源教程分享为主的专业网站,包括:前端、大厂面试题、typescript教程、程序人生、React.js……等,以帮助开发者成长为愿景的社区
7.附上全部代码。(是很简单的吧)
const nodemailer = require("nodemailer")
let transporter = nodemailer.createTransport({
host:'smtp.qq.com',//使用qq发送邮件
// port: 587,
// secure: false,
auth: {
user: "你的邮箱",
pass: "你的授权码",
},
})
// 邮件服务器准备
transporter.verify(function (error, success) {
if (error) {
console.log(error)
}else{
console.log('email is ready')
}
})
transporter.sendMail({
from:'你的邮箱',
to:'你要发送的邮箱',
subject:'你的标题',
text:`你的文字内容`,
})
作者:dmgyyy
链接:https://juejin.im/post/6894170148127801352
看完两件小事
如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:
- 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
- 关注公众号 「画漫画的程序员」,公众号后台回复「资源」 免费领取我精心整理的前端进阶资源教程
本文著作权归作者所有,如若转载,请注明出处
转载请注明:文章转载自「 Js中文网 · 前端进阶资源教程 」https://www.javascriptc.com