分类 Node.js 下的文章

安裝 apidoc

$ npm install -g apidoc

在 test 目錄下新增 testapi 子目錄, 新增腳本

var Timer = module.exports;

/***********************************
$ cd /d G:\OlgCase\QZ\Capybara\server\apidoc>
$ apidoc -i ..\tests\testapi\ -o D:\temp\apidocs2
***********************************/

/**
 * @apiDefine Err
 *
 * @apiError Err 有些错误发生,具体查看错误码描述
 *
 * @apiErrorExample Error-Response:
get_connector_s2c
{
    msgId = 502;
    errorCode = 0;
    causeMsgId = -1; //引起错误的消息id
    errorMsg = '';
}
 */


/**
@api {socket} get_connector_c2s 获取登入服地址
@apiVersion 1.0.0
@apiName get_connector_c2s
@apiGroup 002.login
@apiDescription 通过网关获取登入服地址
@apiParamExample {json} Request-Example:
get_connector_c2s
{
    msgId = 501;
    userId = '';
}
@apiSuccessExample {json} Success-Response:
get_connector_s2c
{
    msgId = 502;
    ip = '';
    port = '';
}

@apiUse Err
 */
Proto.get_connector_c2s = function() {
    this.msgId = 501;
    this.userId = '';
};

Proto.get_connector_s2c = function() {
    this.msgId = 502;
    this.ip = '';
    this.port = '';

};

輸出apidoc

$ apidoc -i ..\tests\testapi\ -o D:\temp\apidocs2

最終輸出效果如下
61354-ra5s2czrvxk.png

首先要去google 開通兩部驗證
37987-ws94zwqrcwp.png

接著在上面搜索裡面輸入 "應用程式"
65282-0enukcpe1h2s.png

輸入"官網"點建立
72804-69ere9k413x.png

彈出應用程式密碼
11032-vn0jauqocnh.png

$ npm install nodemailer
$ npm install nodemailer-smtp-transport

接下來就是功能

const FROM = 'aaa@gmail.com';
const TO = 'bbb@msn.com';

const transport = nodemailer.createTransport(smtpTransport({
    host: 'smtp.gmail.com', // 服务 由于我用的163邮箱
    port: 465, // smtp端口 默认无需改动
    secure: true,
    auth: {
      user: FROM, // 用户名
      pass: 'xxxxxx' // SMTP授权码
    }
}));

//驗證郵箱合理
if (regEmail.test(TO)){
  let code = randomFns()
  transport.sendMail({
    from: FROM, // 發件郵箱
    to: TO, // 收件列表
    subject: '驗證你的電子郵件', //標題
    html: `
    <p>你好!</p>
    <p>你正在註冊Cocabear社區帳號</p>
    <p>你的驗證碼是:<strong style="color: #ff4e2a;">${code}</strong></p>
    <p>***該驗證碼5分鐘内有效***</p>` // html 内容
  }, 
  function(error, data) {
    console.error("error:", error);
    assert(!error,500,"發送驗證碼錯誤!")
    transport.close();
  })
  //後續工作
  console.log("send success");
}else{
    assert(false,422,'請輸入正確郵件格式!')
}

33666-i9le4i9bhot.png

測試後可以發給外郵

最近要開發登入系統, 需要用到郵箱作驗證, 首先去qq郵箱開通smtp服務, 點 "設置" -> "帳號"
71894-50qtt9i4ovx.png

然後把smtp服務給開啟
35129-gd4h0xxdctg.png

接著點管理服務, 然後在"安全設置"中生成授權碼
18381-um6usahrivk.png

生成的授權碼無法再次查看, 要記得保存下來, 後面會用到
07263-54kpgcbgnb.png

然後回到node開發對應功能, 需要先安裝兩個套件

$ npm install nodemailer
$ npm install nodemailer-smtp-transport

接下來就是功能

const transport = nodemailer.createTransport(smtpTransport({
    host: 'smtp.qq.com', // qq smtp 地址
    port: 465, // smtp默認端口
    secure: true,
    auth: {
      user: '1300000000@qq.com', // 郵箱用戶名
      pass: 'fexxxxxxxxxx' // SMTP授權碼
    }
}));

const FROM = '1300000000@qq.com';
const TO = '1300000000@qq.com';

//驗證郵箱合理
if (regEmail.test(TO)){
  let code = randomFns()
  transport.sendMail({
    from: FROM, // 發件郵箱
    to: TO, // 收件列表
    subject: '驗證你的電子郵件', //標題
    html: `
    <p>你好!</p>
    <p>你正在註冊Cocabear社區帳號</p>
    <p>你的驗證碼是:<strong style="color: #ff4e2a;">${code}</strong></p>
    <p>***該驗證碼5分鐘内有效***</p>` // html 内容
  }, 
  function(error, data) {
    console.error("error:", error);
    assert(!error,500,"發送驗證碼錯誤!")
    transport.close();
  })
  //後續工作
  console.log("send success");
}else{
    assert(false,422,'請輸入正確郵件格式!')
}

85595-vswp2y548cf.png

但需要注意的是qq smtp只能發給同樣qq郵箱, 不能發給外郵