nodejs 傳送郵件

玉林路扛把子發表於2020-12-08

1.郵件方法封裝----記得先安裝nodemailer

const nodemailer = require('nodemailer'); //引入模組
let transporter = nodemailer.createTransport({
    //node_modules/nodemailer/lib/well-known/services.json  檢視相關的配置,如果使用qq郵箱,就檢視qq郵箱的相關配置
    service: 'qq', //型別qq郵箱
    port: 465,
    secure: true, // true for 465, false for other ports
    auth: {
        user: '555554540@qq.com', // 傳送方的郵箱
        pass: 'pn5zgafvkdtvnbahc' // smtp 的授權碼
    }
});
//pass 不是郵箱賬戶的密碼而是stmp的授權碼(必須是相應郵箱的stmp授權碼)
//郵箱---設定--賬戶--POP3/SMTP服務---開啟---獲取stmp授權碼

function sendMail(mail, {text="玉林路扛把子",html=''}, call) {
    // 傳送的配置項
    let mailOptions = {
        from: '玉林路扛把子', // 傳送方
        to: mail, //接收者郵箱,多個郵箱用逗號間隔
        subject: text, // 標題
        text: text, // 文字內容
        html: html, //頁面內容
        // attachments: [{//傳送檔案
        //      filename: 'index.html', //檔名字
        //      path: './index.html' //檔案路徑
        //  },
        //  {
        //      filename: 'sendEmail.js', //檔名字
        //      content: 'sendEmail.js' //檔案路徑
        //  }
        // ]
    };

    //傳送函式
    transporter.sendMail(mailOptions, (error, info) => {
        if (error) {
            call(false)
        } else {
            call(true) //因為是非同步 所有需要回撥函式通知成功結果
        }
    });

}

module.exports = {
    sendMail
}

2呼叫方法

 async function timeout() {
        return new Promise((resolve, reject) => {
            Email.sendMail(email, info, (state) => {
                resolve(state);
            })
        })
    }
    await timeout().then(state => {
        let message = msg.error("傳送失敗")
        if (state) {
            message = msg.success('傳送成功',"傳送成功")
        } else {

        }
        return ctx.body=  message
    })

 

相關文章