使用 Node.js 和 163 邮箱发送邮件

打印 上一主题 下一主题

主题 1675|帖子 1675|积分 5025

使用 Node.js 和 163 邮箱发送邮件:从零开始的教程

预备工作

在开始之前,你必要做几件事:

  • 安装 Node.js: 假如你还没装,可以去 Node.js 官网 下载安装。
  • 安装 Nodemailer: 这是我们用来发送邮件的利器,背面会具体介绍。
  • 163 邮箱配置: 你必要一个 163 邮箱账号,并且开启 SMTP 服务,获取授权码。
163 邮箱 SMTP 配置



  • 登录你的 163 邮箱(网页版)。
  • 进入「设置」->「POP3/SMTP/IMAP」。
  • 勾选开启 SMTP 服务,体系会提示你设置一个授权码(不是邮箱密码),记下来,一会儿要用。

动手写代码

好了,预备工作停当,我们开始写代码吧!
步调 1: 初始化项目

创建一个新文件夹(比如 email-demo),然后在终端运行以下命令初始化 Node.js 项目:
  1. mkdir email-demo
  2. cd email-demo
  3. npm init -y
复制代码
这会天生一个 package.json 文件。
步调 2: 安装 Nodemailer

在同一目录下,安装 Nodemailer:
  1. npm install nodemailer
复制代码
步调 3: 编写发送邮件的代码

新建一个文件,比如 sendEmail.js,然后输入以下代码:
  1. const nodemailer = require('nodemailer');
  2. // 配置 SMTP 传输器
  3. const transporter = nodemailer.createTransport({
  4.     host: 'smtp.163.com',       // 163 邮箱 SMTP 服务器
  5.     port: 465,                  // SSL 端口
  6.     secure: true,               // 使用 SSL
  7.     auth: {
  8.         user: 'your_email@163.com',  // 你的 163 邮箱地址
  9.         pass: 'your_auth_code'       // 前面获取的授权码
  10.     }
  11. });
  12. // 发送邮件的函数
  13. async function sendMail() {
  14.     try {
  15.         const info = await transporter.sendMail({
  16.             from: '"博主小助手" <your_email@163.com>', // 发件人显示名和邮箱
  17.             to: 'recipient@example.com',               // 收件人邮箱
  18.             subject: '来自 Node.js 的问候',             // 邮件主题
  19.             text: '你好!这是一封用 Node.js 发送的测试邮件!', // 纯文本内容
  20.             html: '<p>你好!这是一封用 <b>Node.js</b> 发送的测试邮件!</p>' // HTML 内容
  21.         });
  22.         console.log('邮件发送成功:', info.response);
  23.     } catch (error) {
  24.         console.log('邮件发送失败:', error);
  25.     }
  26. }
  27. // 执行发送
  28. sendMail();
复制代码
代码解析



  • SMTP 配置: host 是 163 的 SMTP 服务器地址,port: 465 表示使用 SSL 加密,auth 里填入你的邮箱和授权码。
  • 邮件内容: from 是发件人,to 是收件人,subject 是主题,text 和 html 分别定义纯文本和 HTML 格式的邮件内容。
  • 异步发送: 使用 async/await 确保邮件发送过程清晰且易于处置惩罚错误。
步调 4: 运行代码

在终端运行:
  1. node sendEmail.js
复制代码
假如一切正常,你会看到“邮件发送成功”的消息,收件人也会收到邮件!
加点料:发送验证码

假如你想发送验证码(比如注册验证),可以稍微改一下代码:
  1. const nodemailer = require('nodemailer');
  2. // 生成 6 位验证码
  3. function generateCode() {
  4.     return Math.floor(100000 + Math.random() * 900000).toString();
  5. }
  6. const transporter = nodemailer.createTransport({
  7.     host: 'smtp.163.com',
  8.     port: 465,
  9.     secure: true,
  10.     auth: {
  11.         user: 'your_email@163.com',
  12.         pass: 'your_auth_code'
  13.     }
  14. });
  15. async function sendVerificationEmail(toEmail) {
  16.     const code = generateCode();
  17.     try {
  18.         const info = await transporter.sendMail({
  19.             from: '"验证码服务" <your_email@163.com>',
  20.             to: toEmail,
  21.             subject: '你的验证码',
  22.             html: `
  23.                 <h2>验证码</h2>
  24.                 <p>你的验证码是:<strong style="color: #ff4d4f;">${code}</strong></p>
  25.                 <p>5 分钟内有效,请尽快使用!</p>
  26.             `
  27.         });
  28.         console.log('验证码邮件发送成功:', info.response);
  29.         return code; // 返回验证码用于后续验证
  30.     } catch (error) {
  31.         console.log('发送失败:', error);
  32.         return null;
  33.     }
  34. }
  35. // 测试发送
  36. (async () => {
  37.     const result = await sendVerificationEmail('recipient@example.com');
  38.     if (result) {
  39.         console.log('生成的验证码:', result);
  40.     }
  41. })();
复制代码
运行后,收件人会收到一个带验证码的邮件,控制台也会体现天生的验证码。

留意事项


  • 授权码安全: 不要把邮箱和授权码直接写在代码里,建议用情况变量(比如 dotenv 包)管理。

    • 安装 dotenv: npm install dotenv
    • 创建 .env 文件:
      1. EMAIL_USER=your_email@163.com
      2. EMAIL_PASS=your_auth_code
      复制代码
    • 修改代码:
      1. require('dotenv').config();
      2. const transporter = nodemailer.createTransport({
      3.     host: 'smtp.163.com',
      4.     port: 465,
      5.     secure: true,
      6.     auth: {
      7.         user: process.env.EMAIL_USER,
      8.         pass: process.env.EMAIL_PASS
      9.     }
      10. });
      复制代码

  • 发送频率: 163 邮箱有发送限定,大量发送可能被暂时封禁,建议用于测试或小规模应用。
  • 错误排查: 假如发送失败,检查邮箱、授权码是否正确,或者网络是否被防火墙拦截。
总结

通过 Node.js 和 Nodemailer,我们可以轻松使用 163 邮箱的 SMTP 服务发送邮件。无论是简单的测试邮件,照旧带验证码的动态邮件,这个方法都非常实用。希望这篇教程能帮到你,快去试试吧!有问题接待留言交换~

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

美丽的神话

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表