为了账号安全,请及时绑定邮箱和手机立即绑定

如何用Node.js发送邮件:一步一步教你实现

精彩

使用 Node.js、Nodemailer 和电子邮件 API 一步一步教你如何发送电子邮件的教程

这张照片由Solen FeyissaUnsplash拍摄。

电子邮件仍然是应用程序与用户沟通的基础。不论是初创型SaaS平台、电子商务网站,还是社区论坛,能够发送程序化的电子邮件对于创造用户喜欢的体验至关重要。

看看这些电子邮件必不可少的常见情况:

  • 欢迎新用户,并引导他们了解入门指南
  • 通过确认链接验证用户身份
  • 提醒用户有关账户活动或安全注意事项
  • 发送订单确认信息和发货更新通知
  • 发送密码重置链接邮件
  • 发送新闻通讯和营销内容

在这篇指南里,我将向你展示如何为你的 Node.js 应用添加企业级别的邮件功能。

实际上,在 Node.js 中发送电子邮件主要有两种方式:使用像 Nodemailer 这样的 SMTP 服务,或者利用 邮件 API,后者更适合于需要高送达率、高级分析或处理大量邮件的应用场景,提供更强大的解决方案。

那我们就开始吧!

先装一下 Node.js

首先,确保你安装了Node.js。如果还没安装,可以从nodejs.org下载。

创建一个新的项目。

    // 创建一个名为 email-sender 的目录
    mkdir email-sender  
    // 进入 email-sender 目录
    cd email-sender  
    // 使用 npm 初始化项目并使用默认配置
    npm init -y

使用 Nodemailer 通过 SMTP 发送邮件(选项 1)

Nodemailer 是一个非常流行的 Node.js 库,用于通过 SMTP 发送邮件。它易于配置,并且可以与大多数电子邮件服务提供商一起使用。让我们来看看使用 Nodemailer 发送邮件的关键步骤。

1. 安装Nodemailer插件

首先,在你的项目里安装Nodemailer。

运行 npm install nodemailer 命令来安装nodemailer

2. 安装并配置 Nodemailer

首先,在你的脚本中导入Nodemailer.

const nodemailer = require("nodemailer"); // 引入nodemailer模块

接下来,我们创建一个 传输器(Transporter) ,该传输器负责处理电子邮件的投递过程。传输器包含了你所使用的SMTP服务的相关信息和认证凭证。

    const transporter = nodemailer.createTransport({  
      service: "gmail", // 可以换成其他的 SMTP 服务提供商  
      auth: {  
        user: "your-email@gmail.com",  
        pass: "你的应用专用密码", // 使用的是应用专用密码,而不是你的主密码  
      },  
    });

注意: Gmail 会阻止使用纯文本密码的自动化登录,除非你开启“不安全应用的访问权限”或使用一个 应用密码(如果你启用了两步验证功能,则必须使用)。为了更好地安全性和可靠性,Google 推荐使用 OAuth2 方式,尽管它需要一些额外的配置。

3., 设置电子邮件选项

现在,请填写电子邮件的发件人邮箱、收件人邮箱、主题和邮件内容。

const mailOptions = {  
  from: "your-email@gmail.com",  
  to: "recipient@example.com",  
  subject: "来自Node.js的消息",  
  text: "这是Node.js通过Nodemailer发送的一封测试邮件。",  
};
四. 发送电子邮件

最后,调用 transporter.sendMail() 这个方法发送邮件,

transporter.sendMail(mailOptions, (error, info) => {  
  if (error) {  
    console.error("邮件发送失败:", error);  
  } else {  
    console.log("邮件发送成功:", info.response);  
  }  
});

如果所有设置都正确,你应该会在终端看到一条成功的消息,邮件也会出现在收件人的邮箱里。

完整的代码如下:

    // send-email.js

    const nodemailer = require("nodemailer");

    const transporter = nodemailer.createTransport({
      service: "gmail",
      auth: {
        user: "your-email@gmail.com",
        pass: "your-app-password",
      },
    });

    const mailOptions = {
      from: "your-email@gmail.com",
      to: "recipient@example.com",
      subject: "来自 Node.js 的消息",
      text: "这是一封测试邮件,使用 Nodemailer 从 Node.js 发送的。",
    };

    transporter.sendMail(mailOptions, (error, info) => {
      if (error) {
        console.error("发送邮件时出错:", error);
      } else {
        console.log("邮件已发送:", info.response);
      }
    });
缺什么?

虽然使用 Nodemailer 配合 Gmail(或其他 SMTP 服务提供商)发送邮件很快捷,但也有一些限制:

  • 送达问题 — 通过个人 Gmail 账户发送的邮件更可能被归类为垃圾邮件,特别是批量消息。
  • 发送限制 — 每天的发送限制为,免费的 Gmail 账户为 500 个收件人,而 Google Workspace 账户为 2,000 个收件人。
  • 安全限制 — Gmail 可能会阻止自动化登录,需要使用应用密码或 OAuth2 认证才能可靠地工作。
  • 强制使用发件人地址 — Gmail 会强制使用已验证的邮件地址作为发件人,因此你不能设置自定义‘发件人’地址。

为了更可靠和可扩展的电子邮件发送,使用专用的邮件 API 通常是更好的选择。接下来,我们将看看如何使用邮件 API 发送邮件。

选项 2:通过电子邮件API发送电子邮件

SMTP 是为另一个时代设计的——在那个时候,邮件是手动发送的,而不是通过编程大规模发送。如果你曾经因为 SMTP 配置问题、认证错误或完全没有透明度的限流而感到困扰过,你就会明白这种感觉有多让人烦躁。

电子邮件 API 消除这些烦恼。你不必担心基础设施的问题,而会得到一个既简洁又适合开发者和营销人员使用的解决方案,这个方案确实能用。

我们将使用Notify,这是一个快速、简单且可靠的电子邮件API,让你能够轻松地通过代码发送电子邮件。

直接从你的代码发送事务邮件,notify.cx就是最好的选择

在开始之前,你需要从 Notify 获取一个 API密钥。为此,访问 Notify 网站,注册或登录你的 Notify 账户,并导航到 仪表盘。从那里,进入 凭证 部分,复制你的 API密钥——我们会在脚本中用到这个密钥。

我们现在可以开始编写代码了。

1. 安装 SDK,开始吧!

首先,您需要使用您喜欢的包管理工具安装 Notify Node.js SDK(例如 npm 或 yarn),然后按照说明进行操作。

    # npm  
    使用 npm 安装 notifycx 包  
    npm install notifycx  

    # yarn  
    使用 yarn 安装 notifycx 包  
    yarn add notifycx  

    # pnpm  
    使用 pnpm 安装 notifycx 包  
    pnpm add notifycx
2. 设置好并发送电子邮件

现在,创建一个Node.js脚本来发送邮件。首先,导入Notify,并配置API密钥(将NOTIFY_API_KEY替换为之前保存的API密钥)。

    import Notify from "notifycx";  // 从 "notifycx" 导入 Notify 模块
    import dotenv from "dotenv";    // 从 "dotenv" 导入 dotenv 模块,用于加载环境变量

    dotenv.config();                // 加载 .env 文件配置

    const notify = new Notify(process.env.NOTIFY_API_KEY); // 使用环境变量中的 NOTIFY_API_KEY 创建一个新的 Notify 实例

然后,编写并发送邮件:

    // 发送电子邮件函数是异步的
    async function 发送电子邮件() {  
      const 响应 = await 邮件服务.sendEmail({  
        to: "john@example.com",  
        subject: "你好,世界!",  
        name: "约翰·多",  
        message: "邮件内容如下",  
      });  
    }  

    发送电子邮件();

提示: message 字段支持纯文本和 HTML。因此,你可以根据需要添加样式、链接或图片。

3. 运行脚本步骤:

将此文件保存为 send-email.js,然后运行它。

    node send-email.js

这里运行一个名为 send-email.js 的JavaScript脚本,使用Node.js环境。

就这样。要确认邮件是否已发出,你可以去仪表板的Analytics部分查看。在那里,你可以跟踪邮件的送达和打开情况。

完整代码:
    // 发送邮件的脚本

    import Notify from "notifycx";
    import dotenv from "dotenv";
    dotenv.config(); // 加载环境变量配置

    const notify = new Notify(process.env.NOTIFY_API_KEY);

    async function sendEmail() {
      const response = await notify.sendEmail({
        to: "john@example.com",
        subject: "Hello world",
        name: "John Doe",
        message: "Your email content here",
      });
      console.log(response); // 控制台输出响应
    }
    sendEmail();
why使用电子邮件 API?

虽然 SMTP 可以用于基本的邮件发送,但像 Notify 这样的邮件 API 提供了多个优势,使其成为大多数应用的更好选择:

  • 更简单的配置 — 无需配置SMTP设置或处理应用程序密码或OAuth等认证障碍。
  • 更好的送达率 — 基于API的发送经过优化,可以减少垃圾邮件过滤并提高邮件到达率。如果你自己配置SMTP,邮件往往会被标记为垃圾邮件。
  • 轻松的邮件模板 — 手动编写HTML邮件非常麻烦。Notify内置的所见即所得模板编辑器让你能够创建和自定义邮件,并使用动态元素进行个性化设置。
  • 可扩展性 — 可以处理更高的邮件量,而无需担心SMTP速率限制。
  • 跟踪和分析 — SMTP是一个黑盒子。你不知道邮件发送后的情况。使用Notify服务,你可以从仪表板监控邮件送达状态、打开率和其他关键指标。
  • 灵活集成 — 清晰的API和SDK意味着你可以用几行代码从任何技术栈中发送邮件。

对于生产环境的应用来说,使用邮件 API 通常比基于传统 SMTP 的发送更可靠和可扩展。虽然一些邮件 API 可能会比较贵,Notify 提供了一个包含每月 5,000 封邮件的免费层级,使之成为周末小项目、初创公司起步时或测试的理想选择。

结束

本文将介绍如何使用Node.js发送电子邮件,介绍如何利用传统SMTP协议通过Nodemailer发送邮件,以及采用更现代的电子邮件API方法等技术。

虽然 SMTP 操作简单且适用于简单的情况,但它也存在身份验证难题、速率限制问题以及潜在投递困难。

使用一个电子邮件API提供了一个更可扩展和可靠的替代选择,省去了手动配置SMTP的麻烦,同时提供了更好的追踪和定制选项。尽管有许多这样的API可供选择,如果你正在寻找一个方便开发者使用、自带分析工具和直观模板编辑器的解决方案,Notify是不错的选择,它提供每月5,000封免费邮件。

最后,合适的选择要看你的需求——是需要快速的SMTP集成,还是需要一个为生产应用提供稳定邮件发送的解决方案。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消