JavaScript (Node.js) 发送电子邮件 — 库和代码示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

JavaScript (Node.js) 发送电子邮件:完整指南



发送电子邮件是任何现代 Web 应用程序的关键功能之一。无论是通知、注册确认、邮件群发还是密码重置,能够以编程方式发送电子邮件是每位开发者的必备技能。在本材料中,我们将详细介绍如何使用流行的库、SMTP 设置和最佳实践,在 JavaScript (Node.js) 中组织电子邮件发送。



为什么要在 Node.js 中发送电子邮件?

Node.js 是一个异步 JavaScript 运行时环境,非常适合处理大量请求。通过 Node.js 发送邮件可以:

  • 自动化用户通知;
  • 将邮件群发与后端集成;
  • 实时处理发送错误;
  • 为整个项目使用同一种语言 (JavaScript)。


Node.js 中发送电子邮件的主要库

目前有几种经过验证的库。让我们看看最流行的:



1. Nodemailer

Nodemailer 是 Node.js 中发送电子邮件的事实标准。该库支持 SMTP、内置模板、附件、HTML 邮件和 OAuth2。它是免费的,不需要外部服务。

// 安装:npm install nodemailerconst nodemailer = require('nodemailer');

const transporter = nodemailer.createTransport({ host: 'smtp.example.com', port: 587, secure: false, // 对于 465 端口为 true auth: { user: 'user@example.com', pass: 'your-password' }});

async function sendMail() { const info = await transporter.sendMail({ from: '"发件人" <from@example.com>', to: 'to@example.com', subject: '来自 Node.js 的问候', text: '这是一封测试邮件。', html: '<b>这是一封测试邮件。</b>' }); console.log('邮件已发送:', info.messageId);}sendMail().catch(console.error);


2. SendGrid(通过 @sendgrid/mail)

SendGrid 是 Twilio 提供的云邮件群发服务。@sendgrid/mail 库允许通过 SendGrid API 轻松发送邮件。适用于大规模项目。

// 安装:npm install @sendgrid/mailconst sgMail = require('@sendgrid/mail');sgMail.setApiKey('YOUR_SENDGRID_API_KEY');

const msg = { to: 'recipient@example.com', from: 'sender@example.com', subject: '通过 SendGrid 发送', text: '来自 SendGrid 的问候!', html: '<strong>来自 SendGrid 的问候!</strong>'};

sgMail.send(msg) .then(() => console.log('邮件已发送')) .catch(error => console.error(error));


3. Mailgun.js

Mailgun 是另一个面向开发者的流行服务。mailgun.js 库提供了一个方便的接口来发送邮件和管理邮件群发。

// 安装:npm install mailgun.jsconst formData = require('form-data');const Mailgun = require('mailgun.js');const mailgun = new Mailgun(formData);

const mg = mailgun.client({ username: 'api', key: 'YOUR_MAILGUN_API_KEY'});

mg.messages.create('sandbox.mailgun.org', { from: 'Mailgun Sandbox <postmaster@sandbox.mailgun.org>', to: ['recipient@example.com'], subject: '来自 Mailgun 的问候', text: '通过 Mailgun 发送的测试邮件。'}).then(msg => console.log(msg)).catch(err => console.error(err));


配置 SMTP 发送电子邮件

如果您使用自己的邮件服务器或 Gmail/Yandex 账户,则需要配置 SMTP。以下是 Gmail 的示例:

const transporter = nodemailer.createTransport({    service: 'gmail',    auth: {        user: 'your@gmail.com',        pass: 'your-app-password' // 使用应用密码    }});

推荐