使用Nodemailer调用自己的邮箱发送邮件(简单)

时间:2021-1-18 作者:admin

实现个人邮箱发送邮件服务

1.搭建基础的nodemailer服务。

1.新建nodemail文件夹 , 新建index.js 
2.npm init  
3.npm install nodemailer

安装了nodemailer之后我们去看一下nodemailer的官方文档。这里附上链接:
nodemailer.com/about/

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:`你的文字内容`,
})

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:`你的文字内容`,
})
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。