node.js使用Nodemailer發送郵件


引言

  • 常常看到一些網站有郵箱獲取驗證碼驗證注冊或者修改密碼等,今天也來了解一下在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即可收到 郵件

注意

有時候發送成功,但收件人收不到郵件,可能因為網絡問題,也有可能對方把它作為垃圾郵件了,在對方的垃圾郵箱可查找發送的郵箱。不要拿我的授權碼以及郵箱測試,因為我的授權碼隨時會變。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM