亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Node實現郵箱服務功能

> 可以使用 nodemailer 这个模块提供的能力完成一些诸如邮箱登录、找回密码等功能的开发。
> 项目地址:https://github.com/Ewall1106/mall

配置邮件客户端

  • 我们以 QQ 邮箱为例,打开qq邮箱 > 设置 > 账户中,我们将SMTP服务开启。(默认是关闭的)

  • 接下来会有一些认证方式,按照提示操作,最后会得到一个授权码

基本使用

  • 根据官网的步骤下载这个 nodemailer 包:

$ npm install nodemailer
  • 根据官网的示例代码我们复制并进行简单配置:

'use strict';const nodemailer = require('nodemailer');async function main() {
  let transporter = nodemailer.createTransport({
    // 使用qq的smtp服务器
    host: 'smtp.qq.com',
    port: 587,
    secure: false,
    auth: {
      user: '这里填入你的邮箱',
      pass: '这里填入上一步生成得到的授权码',
    },
  });

  // 配置邮件标题、内容等
  // 这里我自己给自己发送一封 Test 测试邮件
  let info = await transporter.sendMail({
    from: '认证邮件',
    to: '[email protected]',
    subject: 'Test',
    text: 'Hello world',
    html: '<b>Hello world</b>',
  });

  console.log('Message sent:', info.messageId);
  console.log('Preview URL:', nodemailer.getTestMessageUrl(info));}main().catch(console.error);
  • 执行这个 js 文件:

$ node mail.js
  • 然后我们就可以从自己的邮箱中收到这封测试邮件了:

项目实践

  • 在注册界面我们需要用到邮箱服务功能 来完成用户的注册。

  • 在用户点击发送邮箱验证码的时候,将邮箱作为 key验证码作为 value 存储到 redis 缓存中。(当然你也可以用其它方式将其保存下来)

async sendMail(ctx) {
  const { email } = ctx.request.body;

  try {
    // 随机生成一个验证码
    const code = 1234;
    // 将上面 `nodemailer` 发送邮箱的方法封装后在这里调用
    sendMail()
    // 设置缓存key-value键值对并设置过期时间
    setValue(email, code, 60 * 60 * 24);

    ctx.body = {
      code: 200,
      entry: '邮箱验证码已经发送成功',
    };
  } catch (err) {
    // handle error...
  }}
  • 然后当我们点击注册按钮的时候对其校验。

async registry(ctx, next) {
  const { email, password,mailcode } = ctx.request.body;

  // 从redis缓存中获取code
  const code = await getValue(email);
  // 比对验证
  if (!code) {
    ctx.body = {
      code: 400,
      message: '请点击发送验证码重新发送',
    };
    return;
  }
  if (code !== mailcode) {
    ctx.body = {
      code: 400,
      message: '请输入正确的邮箱验证码',
    };
    return;
  }
  // ...}
  • 邮箱服务的功能就完成了。

點擊查看更多內容
1人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
Web前端工程師
手記
粉絲
7082
獲贊與收藏
267

關注作者,訂閱最新文章

閱讀免費教程

感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消