在开发 Web 应用程序时,发送电子邮件是一项经常使用的任务,例如,向用户发送帐户验证电子邮件或密码重置电子邮件。Express.js 是一种流行的服务器端 JavaScript 框架,而 nodemailer 是一个可靠的 Node.js 库,用于发送电子邮件。
在本文中,我们将介绍如何在 Express.js 中使用 nodemailer 库来发送电子邮件。
安装 nodemailer
在使用 nodemailer 之前,我们需要将其安装为项目的依赖项。可以通过 NPM 使用以下命令进行安装:
npm install nodemailer
配置 nodemailer
在配置 nodemailer 之前,我们需要使用邮箱提供商提供的凭据,如 SMTP 主机,SMTP 端口,SMTP 用户名和 SMTP 密码。
以下是一个示例 Gmail 邮箱配置:
const nodemailer = require('nodemailer'); let transporter = nodemailer.createTransport({ host: 'smtp.gmail.com', port: 587, secure: false, auth: { user: 'your_email@gmail.com', pass: 'your_password' } });
在上面的代码中,我们使用 Gmail 的 SMTP 主机和端口,并提供我们的 Gmail 帐户的用户名和密码。
发送邮件
现在我们已经配置了 nodemailer,我们可以通过使用其 .sendMail()
方法来发送电子邮件。
以下代码演示如何向一个收件人发送电子邮件:
const message = { from: 'your_email@gmail.com', to: 'recipient_email@example.com', subject: 'Testing nodemailer', text: 'Hello World!' }; transporter.sendMail(message, (err, info) => { if (err) throw err; console.log('Message sent: %s', info.messageId); });
上面的代码将使用给定的 nodemailer transporter 向 recipient_email@example.com 发送电子邮件。邮件将包含一个名为 "Testing nodemailer" 的主题和一个简单的文本消息 "Hello World!"。
在上面的代码块中,我们使用 .sendMail()
方法传递一个包含电子邮件的对象。该对象应包含以下内容:
from
:发送邮件的邮箱地址to
:收件人邮箱地址subject
:电子邮件主题text
:电子邮件正文
请注意,此方法是异步的,因此建议使用回调函数处理错误和成功信息。
发送 HTML 格式的邮件
nodemailer 还提供了一种方法 html
以 HTML 格式发送电子邮件。
以下代码演示如何以 HTML 格式发送电子邮件:
const message = { from: 'your_email@gmail.com', to: 'recipient_email@example.com', subject: 'HTML email with nodemailer', html: '<h1>Hello World!</h1><p>This is HTML email.</p>' }; transporter.sendMail(message, (err, info) => { if (err) throw err; console.log('Message sent: %s', info.messageId); });
上面的代码将使用给定的 nodemailer transporter 向 recipient_email@example.com 发送电子邮件,电子邮件将在 HTML 格式中包含 "Hello World!" 和 "This is HTML email."。
发送附件
nodemailer 还支持添加附件到电子邮件中。以下代码演示如何向电子邮件添加附件:
const message = { from: 'your_email@gmail.com', to: 'recipient_email@example.com', subject: 'Email with attachment', attachments: [ { filename: 'image.jpg', path: '/path/to/image.jpg' } ], text: 'Please see attachment for image' }; transporter.sendMail(message, (err, info) => { if (err) throw err; console.log('Message sent: %s', info.messageId); });
在上面的代码中,我们使用 .attachments
属性向电子邮件添加名为 "image.jpg" 的附件。我们还通过 path
属性指定附件的路径。
总结
nodemailer 是一个可靠的 Node.js 库,用于发送电子邮件。它很容易与 Express.js 集成,并提供各种发送电子邮件以及添加 HTML 和附件的选项。
在本文中,我们演示了如何在 Express.js 中配置和使用 nodemailer 来发送电子邮件。如果您正在开发需要发送电子邮件的应用程序,nodemailer 可以是一个非常好的选择。
示例代码
完整的示例代码可在以下代码块中找到:
const express = require('express'); const nodemailer = require('nodemailer'); const app = express(); const transporter = nodemailer.createTransport({ host: 'smtp.gmail.com', port: 587, secure: false, auth: { user: 'your_email@gmail.com', pass: 'your_password' } }); app.get('/send', (req, res) => { const message = { from: 'your_email@gmail.com', to: 'recipient_email@example.com', subject: 'Testing nodemailer', text: 'Hello World!' }; transporter.sendMail(message, (err, info) => { if (err) throw err; console.log('Message sent: %s', info.messageId); res.send('Mail sent successfully!'); }); }); app.listen(3000, () => { console.log('Server started on port 3000'); });
在上面的代码中,我们创建了一个 Express.js 应用程序,并通过访问 localhost:3000/send
URL 发送电子邮件。请务必替换 your_email@gmail.com
和 your_password
以及 recipient_email@example.com
以适合您的配置。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65b0b9f9add4f0e0ffa132b9