引言
- 常常看到一些網站有郵箱獲取驗證碼驗證注冊或者修改密碼等,今天也來了解一下在
nodejs + express
怎么發送電子郵件。使用模塊Nodemailer
。這里以qq郵箱舉例子。
安裝模塊
npm install Nodemailer --save
創建一個SMTP客戶端配置
//引入模塊 nodemailer
const nodemailer = require('nodemailer')
const config = {
// 163郵箱 為smtp.163.com
host: 'smtp.qq.com',//這是qq郵箱
//端口
port: 465,
auth: {
// 發件人郵箱賬號
user: '651762920@qq.com',
//發件人郵箱的授權碼 這里可以通過qq郵箱獲取 並且不唯一
pass: 'xxxxxxxxx'
}
}
創建一個SMTP客戶端配置對象
即把 上述的客戶端配置作為
nodemailer.createTransport
方法參數傳遞進去即可
const transporter = nodemailer.createTransport(config)
創建一個收件人對象
即填寫發件人和收件人的一些信息,以及發送的內容
const mail = {
// 發件人 郵箱 '昵稱<發件人郵箱>'
from: '車神-黃傑<651762920@qq.com>',
// 主題
subject: '激活驗證碼',
// 收件人 的郵箱 可以是其他郵箱 不一定是qq郵箱
to: 'xxxxxx',
// 內容
text: `您的激活驗證碼為:666888, 請24小時內有效,請謹慎保管。` ,
//這里可以添加html標簽
html: '<a href="https://www.cnblogs.com/HJ412/">車神-黃傑</a>'
}
發送郵件 調用 transporter.sendMail(mail, callback)
@params mail 收件人配置對象
@params callback 回調函數
function sendEmail(mail){
transporter.sendMail(mail, function(error, info){
if(error) {
return console.log(error);
}
transporter.close()
console.log('mail sent:', info.response)
})
}
獲取授權碼
打開pc端qq郵箱,點擊設置,再點擊帳戶
往下拉 可開啟POP3/SMTP服務 根據提示即可獲取qq郵箱授權碼
完整代碼
我把這些代碼封裝成一個
nodemailer.js
文件
//引入模塊 nodemailer
const nodemailer = require('nodemailer')
const config = {
// 163郵箱 為smtp.163.com
host: 'smtp.qq.com',//這是qq郵箱
//端口
port: 465,
auth: {
// 發件人郵箱賬號
user: '651762920@qq.com',
//發件人郵箱的授權碼 這里可以通過qq郵箱獲取 並且不唯一
pass: 'etrdgnwpniclsbfih'
}
}
const transporter = nodemailer.createTransport(config)
const mail = {
// 發件人 郵箱 '昵稱<發件人郵箱>'
from: '車神-黃傑<651762920@qq.com>',
// 主題
subject: '激活驗證碼',
// 收件人 的郵箱 可以是其他郵箱 不一定是qq郵箱
to: '1928611412@qq.com',
// 內容
text: `您的激活驗證碼為:${checkCode}, 請24小時內有效,請謹慎保管。` ,
//這里可以添加html標簽
html: '<a href="https://www.cnblogs.com/HJ412/">車神-黃傑</a>'
}
transporter.sendMail(mail, function(error, info){
if(error) {
return console.log(error);
}
transporter.close()
console.log('mail sent:', info.response)
})
運行 nodemailer.js
即可收到 郵件
注意
有時候發送成功,但收件人收不到郵件,可能因為網絡問題,也有可能對方把它作為垃圾郵件了,在對方的垃圾郵箱可查找發送的郵箱。不要拿我的授權碼以及郵箱測試,因為我的授權碼隨時會變。