美文网首页
08.第三方模块之nodemailer

08.第三方模块之nodemailer

作者: 讲武德的年轻人 | 来源:发表于2019-09-25 11:12 被阅读0次

    第三方模块和第三方模块类似,第三方模块一般也是个人写的,只不过可以公开被别人使用。
    其实就是一个npm插件。
    去这里下载:https://www.npmjs.com
    搜索nodemailer
    nodemailer帮助文档https://nodemailer.com/about/

    • 安装nodemailer:
      npm install nodemailer
      查找各种邮箱用的端口号的文件:\node_modules\nodemailer\lib\well-known\services.json
      比如查qq
      qq邮箱设置smtp开启
      开启的时候需要验证码,用收集发个短信:


      执行该js文件,则会发邮件,代码如下:
    'use strict';
    const nodemailer = require('nodemailer');
    // 创建发送邮件的请求对象
    let transporter = nodemailer.createTransport({
        host: 'smtp.qq.com', // 发送方邮箱
        port: 465,  // 端口号
        secure: true, // true for 465, false for other ports
        auth: {
            user: '2495730727@qq.com', // 发送方邮箱地址
            pass: 'rwjmlzsgjqvoeafe' // smtp验证码
        }
    });
    
    // 邮件信息
    let mailobj = {
        from: '"Fred Foo 👻" <2495730xxx@qq.com>', // 发件人
        to: 'songxxxx@xxxx.com.cn, gengxxxx2016@163.com', // 收件人
        subject: 'Hello ✔', // 邮件主题
        text: 'Hello hello hello hello', // 邮件正文,必须是字符串
        // html: '<b>Hello world?</b>' // 邮件正文
    }
    
    // 发送邮件
    transporter.sendMail(mailobj);
    

    text和html只能选择其中一个发送。



    那我怎么知道我有没有发送成功呢???
    当然是通过回调函数实现啦!!!
    将上面的代码的最后一行稍微改动下:

    transporter.sendMail(mailobj,(err,data)=>{
        console.log(err);
        console.log(data);
    });
    
    执行

    把上述发邮件功能模块化

    方法一
    • mail.js
    function send(mail,code){
        'use strict';
        const nodemailer = require('nodemailer');
        // 创建发送邮件的请求对象
        let transporter = nodemailer.createTransport({
            host: 'smtp.qq.com', // 发送方邮箱
            port: 465,  // 端口号
            secure: true, // true for 465, false for other ports
            auth: {
                user: '2495730xxx@qq.com', // 发送方邮箱地址
                pass: 'rwjmlzsgjqvoeafe' // smtp验证码
            }
        });
        // 邮件信息
        let mailobj = {
            from: '"小花生👻" <2495730xxx@qq.com>', // 发件人
            to: mail, // 收件人
            subject: 'Hello ✔', // 邮件主题
            text: `您的验证码是${code}`, // 邮件正文
            // html: '<b>Hello world?</b>' // 邮件正文
        }
        // 发送邮件
        transporter.sendMail(mailobj,(err,data)=>{
            console.log(err);
            console.log(data);
        });
    }
    module.exports=send
    // send('gengsong2016@163.com,songgeng@cslc.com.cn','123456');
    
    • 程序调用方法
    const sendmail=require('../utils/mail')
    sendmail('gengsong2016@163.com,songgeng@cslc.com.cn','123456');
    
    方法二
    • mail.js
    "use strict";
    const nodemailer = require("nodemailer");
    
    // 创建发送邮件的对象
      let transporter = nodemailer.createTransport({
        host: "smtp.qq.com",//发送方邮箱 qq 通过lib/well-know/service.json
        port: 465, //端口号
        secure: true, // true for 465, false for other ports
        auth: {
          user: '352186537@qq.com', // 发送方的邮箱地址
          pass: 'kxlfqavqcooabgfd' //  smtp 验证码
        }
      });
    
    
      function send(mail,code){
          // 邮件信息
          let  mailobj={
            from: '"今天天气不错" <352186537@qq.com>', // sender address
            to: mail, // list of receivers
            subject: "1902", // Subject line
            text: `您的验证码是${code},有效期五分钟`, // plain text body
            //html: "<b>Hello world?</b>" // html body
          }
          return new Promise((resolve,reject)=>{
            transporter.sendMail(mailobj,(err,data)=>{
              //  console.log(err)
              //  console.log(data)
                if(err){
                  reject()
                }else{
                  resolve()
                }
            });
          })
          
      }
    // 抛出对象
      module.exports={send}
    
    • 程序调用对象中的方法
    const Mail=require('../utils/mail')
    Mail.send(mail,code)
    

    相关文章

      网友评论

          本文标题:08.第三方模块之nodemailer

          本文链接:https://www.haomeiwen.com/subject/jgxquctx.html