likes
comments
collection
share

如何使用Node.js实现发送邮件功能

作者站长头像
站长
· 阅读数 75

在我们开发过程中,很多时候都需要用到发送邮件的功能,比如用户注册验证、密码重置、通知提醒等等,本篇文章将为大家介绍如何使用 nodeJS 实现邮件的发送功能

初始化项目

首先我们初始化一个 node 项目

npm init -y

为了方便使用 ESModule 语法,我们在 package.json 中加个字段

 "type": "module",

nodemailer 用法

node 中发送邮件我们可以安装使用nodemailer包,这里是它的官网地址

首先安装它

npm install nodemailer

如果我们想用它发送邮件,我们还需要一个授权码,这里以 qq 邮箱为例教大家如何获取授权码

登录 QQ 邮箱 → 设置 → 账号 → POP3/IMAP/SMTP/...开启。然后根据提示发送短信之后,即可获取授权码

如何使用Node.js实现发送邮件功能

然后新建一个文件sendemail.js来使用它

import nodemailer from "nodemailer";

const transporter = nodemailer.createTransport({
  host: "smtp.qq.com",
  port: 587,
  secure: false,
  auth: {
    user: "xxx@qq.com", //我的邮箱
    pass: "xxx", //授权码
  },
});

async function sendEMail() {
  const info = await transporter.sendMail({
    from: "xxx@qq.com",//发送人邮箱
    to: "xxx@qq.com",//发送给谁
    subject: "你好",//标题
    text: "hhhhh",//内容
  },*);

  console.log("邮件发送成功:", info.messageId);
}

sendEMail();

其中transporter是一个可以发送邮件的对象,如果你已经有一个传输器对象,则可以使用它来发送任意数量的邮件。调用它的 sendMail 方法则可以实现邮件的发送。

我们来执行一下看看效果

如何使用Node.js实现发送邮件功能

执行成功后我们便收到了发送来的邮件

如何使用Node.js实现发送邮件功能

不仅如此,它还可以发送 html 邮件,你可以直接在使用 html 字符串,但是这样不太好做出炫酷的邮件效果

async function sendEMail() {
  const info = await transporter.sendMail({
    from: "xxx@qq.com",//发送人邮箱
    to: "xxx@qq.com",//发送给谁
    subject: "你好",//标题
    html: "<p>hhhh</p>",//内容
  },*);

  console.log("邮件发送成功:", info.messageId);
}

因此我们可以新建一个 html 文件,然后使用 node 的文件系统(fs)读取一下即可,这里我们随便找了一个炫酷的 html 页面,命名为ikun.html

然后在sendemail.js中读取使用

import nodemailer from "nodemailer";
import fs from "fs";
const transporter = nodemailer.createTransport({
  host: "smtp.qq.com",
  port: 587,
  secure: false,
  auth: {
    user: "xxx@qq.com", //我的邮箱
    pass: "xxx", //授权码
  },
});

async function sendEMail() {
  const info = await transporter.sendMail({
    from: "xxx@qq.com",//发送人邮箱
    to: "xxx@qq.com",//发送给谁
    subject: "你好,爱坤",//标题
    html: fs.readFileSync("./static/ikun.html"),
  },*);

  console.log("邮件发送成功:", info.messageId);
}

sendEMail();

最后执行以下看看效果

如何使用Node.js实现发送邮件功能

非常好用,ok到这里我们就完成了一个简单的邮件发送功能,如果对本篇文章感兴趣的话就点个赞吧~

转载自:https://juejin.cn/post/7288956487719747623
评论
请登录