Node实现邮箱服务功能

作者: ComfyUI | 来源:发表于2020-11-08 11:52 被阅读0次

可以使用 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: '123456@qq.com',
    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;
  }
  // ...
}
  • 邮箱服务的功能就完成了。

相关文章

  • Node实现邮箱服务功能

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

  • Node.js实现注册邮箱激活功能

    今天了解了node如何实现邮箱激活功能,这个功能非常常见,当我们注册一个账号时,肯定会有这步,下面看下如何实现这个...

  • email邮件服务

    email邮箱服务创建步骤 引入 application.yml qq邮箱配置 邮箱服务接口 邮箱服务实现 测试 ...

  • Node.js中的HTTP服务

    标签(node): WebDevelop Node.js最重要的功能之一就是实现HTTP和HTTPS服务器的能力,...

  • 发送邮件功能

    设置QQ邮箱客户端功能 登录QQ邮箱,开启下面两个功能;获取到【授权码】; node端 https://nodem...

  • Node.js实现注册邮箱激活功能

    在做自己的node项目极客教程时,需要开发一个注册邮箱激活的功能,这个功能非常常见,当我们注册一个账号时,肯定会有...

  • 5.开启邮件服务功能

    在Metabase中配置Email功能。当配置了Email服务之后,Metabase使用该邮箱账号能够实现以下的功...

  • Java Web - 邮件发送

    一、实现方法 邮箱需要先开通 SMTP 服务,以163邮箱为例,如何开启服务可以百度对应的邮箱。开启服务后就可以进...

  • node实现邮件发送

    1.邮箱实现授权码(以QQ邮箱为例): 2.node后台: 2.1下载依赖模块:nodemailer 和n...

  • 四:http模块

    node的目的是为了给JavaScript写服务器。实现方式就是使用node自带的http模块 实现一个简单的服务...

网友评论

    本文标题:Node实现邮箱服务功能

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