Node.js에서 등록 이메일 활성화 기능을 구현하는 방법의 예

亚连
풀어 주다: 2018-05-29 11:55:33
원래의
1915명이 탐색했습니다.

요즘에는 많은 웹사이트에서 등록 이메일 활성화 기능을 필요로 합니다. 이 글에서는 Node.js에서 등록 이메일 활성화 기능을 구현하는 방법의 예를 주로 소개하고 참고용으로 제공합니다.

나만의 노드 프로젝트 괴짜 튜토리얼을 할 때 등록 이메일 활성화 기능을 개발해야 합니다. 이 기능은 우리가 계정을 등록할 때 확실히 이 기능을 구현하는 방법을 살펴보겠습니다. .

1. 이메일 주소 등록

먼저 인증 이메일 발송을 지원하는 이메일 주소를 등록하세요. 여기에 NetEase의 163 이메일 주소를 등록했으니 다음은 163 이메일 주소를 발송 이메일 주소로 사용하겠습니다

성공 후 로그인하세요. 등록 후 탐색 모음에서 설정을 클릭하고 POP3/SMTP/IMAP을 선택한 후 POP3/SMTP/IMAP 서비스를 활성화하고 인증 코드를 설정하세요.

2. nodemailer 플러그인을 다운로드합니다.

명령줄에 npm install --save nodemailer를 입력합니다.

3 이메일을 보내는 코드를 작성합니다.

3.1 활성화를 보내는 코드를 캡슐화합니다. 이메일로 보낸 후 내보내기:

//email.js

// 引入 nodemailer
const nodemailer = require('nodemailer');

// 创建一个SMTP客户端配置
const config = {
    host: 'smtp.163.com',
    port: 465,
    auth: {
      user: 'xxxx@163.com', //刚才注册的邮箱账号
      pass: 'xxxxxx' //邮箱的授权码,不是注册时的密码
    }
  };

// 创建一个SMTP客户端对象
const transporter = nodemailer.createTransport(config);

// 发送邮件
module.exports = function (mail){
  transporter.sendMail(mail, function(error, info){
    if(error) {
      return console.log(error);
    }
    console.log('mail sent:', info.response);
  });
};
로그인 후 복사

3.2 테스트:

//sendtest.js

var send = require('./email.js');


// 创建一个邮件对象
var mail = {
  // 发件人
  from: &#39;极客教程 <xxxx@163.com>&#39;,
  // 主题
  subject: &#39;[极客教程]激活邮箱账号&#39;,
  // 收件人
  to: &#39;xxxx@qq.com&#39;,
  // 邮件内容,HTML格式
  text: `尊敬的${user.name},您好!点击链接即可激活您的极客教程
      网账号,http://localhost:3000/checkCode?name=${user.name}&code=${user.code}为保障您的帐号安全,请在24小时内点击该链接,您也可以将链接复制到浏览器地址栏访问。 若如果您并未尝试修改密码,请忽略本邮件,由此给您带来的不便请谅解。本邮件由系统自动发出,请勿直接回复!` //接收激活请求的链接
};
send(mail);
로그인 후 복사

성공하면 테스트 메일함에 전송된 메시지를 볼 수 있습니다.


4. 확인 단계

이메일 확인 구현 방법에 대해 간단히 이야기하겠습니다.

1 다음과 같이 사용자 이름과 활성화 코드가 포함됩니다.

{
  code: String, //激活码,格式自己定义
  date: Number, //过期日期,过期后不能激活
  islive: Boolean //判断是否激活
}
로그인 후 복사

3. 활성화 요청에 응답하고 활성화 링크의 사용자 이름에 따라 검색합니다. 사용자가 존재하는 경우 활성화 코드가 있는지 확인합니다. 일치하여 활성화 코드가 만료되었는지 확인합니다. 모두 올바른 경우 활성화 상태를 변경합니다. 다음 코드는

// 创建一个邮件对象
var mail = {
  // 发件人
  from: &#39;极客教程 <xxxx@163.com>&#39;,
  // 主题
  subject: &#39;[极客教程]激活邮箱账号&#39;,
  // 收件人
  to: &#39;xxxx@qq.com&#39;,
  // 邮件内容,HTML格式
  text: `尊敬的${user.name},您好!点击链接即可激活您的极客教程
      网账号,http://localhost:3000/checkCode?name=${user.name}&code=${user.code}为保障您的帐号安全,请在24小时内点击该链接,您也可以将链接复制到浏览器地址栏访问。 若如果您并未尝试修改密码,请忽略本邮件,由此给您带来的不便请谅解。本邮件由系统自动发出,请勿直接回复!` //接收激活请求的链接
};
send(mail);
로그인 후 복사

5. 다음과 같은 문제입니다. 개발 중 오류가 발생했습니다.

// check email code
exports.checkCode = function (req, res){
  var username = req.query.name;
  var code = req.query.code;
  User.findOne({name: username}, function (err, user){
      if (user.code === code && (user.date - Date.now()) > 0){
          User.update({name: username}, {islive: true}, function (err){
              if (err){
                  res.json({error: true})
              }else{
                  console.log(user)
                  res.json({ok: true})
              }
          });
      }else{
        res.json({
          email: user.mail,
          failure: true
        })
      }
  });
}
로그인 후 복사

smtp 서버 확인에 실패했습니다. NetEase의 이메일에 인증 제한이 있기 때문입니다. 이메일 등록 시 사용한 계정 번호와 인증 코드를 꼭 확인하세요.

위 내용은 제가 여러분을 위해 정리한 내용입니다. 앞으로 도움이 되길 바랍니다.

관련 기사:

js의 Apply와 Math.max() 함수 간의 문제와 차이점 소개

Vue 내장 구성 요소 구성 요소의 응용 시나리오에 대한 간략한 토론

A vue2


에서 less를 사용하는 간단한 튜토리얼

위 내용은 Node.js에서 등록 이메일 활성화 기능을 구현하는 방법의 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!