电子邮件是 Web 应用程序中重要的一部分,实现发送电子邮件可以帮助我们在不同角色之间进行数据或者消息传递。在这篇文章中,我们将会讲解如何在 Express.js 应用程序中实现发送电子邮件,这里将提供一份完整的指南,包括安装和配置 SMTP 服务,生成和发送电子邮件以及其他一些实现方式和技巧。
为应用程序配置 SMTP 服务
要发送电子邮件,首要步骤是配置一个 SMTP 服务来实现邮件的发送。在此过程中,许多服务供应商可提供 SMTP 服务,例如 Gmail、Mailgun 或 SendGrid 等,但此处我们将以 Gmail 作示例讲解。
成为 Gmail 账户管理员
使用 Gmail SMTP 服务。您必须成为组织中某个人的管理员,更好的是自己成为管理员。这将允许您访问 Google 云平台并创建一个新的 OAuth 项目以进行 SMTP 配置。
创建新的 Google OAuth 项目
在 Google 开发者控制台(https://console.developers.google.com/)中,使用您的管理员账户创建一个新的 OAuth 项目。在“授权篇目”中,为该项目添加以下 OAuth 客户端 ID:
- 一个“Web 应用程序”客户端 ID,用于应用程序的 Web 组件。
- 一个“其他类型”客户端 ID,用于从服务器应用程序中使用的 OAuth 身份验证令牌。
配置 OAuth 客户端 ID
创建了 OAuth 客户端 ID 后,我们需要对其进行配置,设置允许访问 Gmail API。通过以下步骤完成 OAuth 客户端 ID 的配置:
在您的 OAuth 管理面板中选择“Web 应用程序”客户端 ID。
添加应用程序主页和回调 URL。
这两个 URL 是使用 OAuth 身份验证时,从 Google 登录授权流中使用的 URL。它们应该是指向您的应用程序部署的服务器的 URL。
选择“其他类型”客户端 ID。
选择“访问控制”标签,然后选择“项目用户”。
添加一个新用户,并将默认角色分配为“编辑”。
接着,在您的 Gmail 账户中配置 SMTP 服务。
- 登录您的 Gmail 账户。
- 导航到设置页面并切换到“转发和 POP/IMAP”选项卡。
- 选择“启用 IMAP”。
- 使用 SMTP 服务器名称“smtp.gmail.com”,端口为“465”。
- 使用您的邮件地址和密码来验证 SMTP 连接。
安装和配置 nodemailer
当我们已经完成 SMTP 服务的配置后,我们需要使用一个 JavaScript 库来生成和发送电子邮件。nodemailer 是一个流行的库,它可以与各种不同类型的 SMTP 服务一起使用,并为我们提供很多选项来自定义电子邮件。
安装 nodemailer:
npm install nodemailer --save
在我们生成和发送电子邮件之前,我们需要在应用程序代码中配置 SMTP 凭据,这里将邮件地址与 SMTP 服务密码存储在一个配置文件中:
module.exports = { email: process.env.SMTP_EMAIL, password: process.env.SMTP_PASSWORD, host: process.env.SMTP_HOST, port: process.env.SMTP_PORT, };
其中:
- SMTP_EMAIL:指您的 Gmail 账户电子邮件地址。
- SMTP_PASSWORD:您的 Gmail 账户密码或是应用程序专用密码。
- SMTP_HOST:SMTP 服务主机名称(例如:“smtp.gmail.com”)。
- SMTP_PORT:SMTP 服务端口号(例如:465)。
生成并发送电子邮件
要生成和发送电子邮件,我们需要使用 nodemailer 库。以下是使用 nodemailer 库发送电子邮件的一些代码示例:
// javascriptcn.com 代码示例 const nodemailer = require('nodemailer'); const transporter = nodemailer.createTransport({ host: config.host, port: config.port, auth: { user: config.email, pass: config.password, }, }); const sendMail = async (mailOptions) => { const response = await transporter.sendMail(mailOptions); console.log('Message sent:', response.messageId); }; const generateMail = (receiver, subject, body) => { return { from: '<' + config.email + '>', to: receiver, subject: subject, html: body, }; }; const sampleEmail = () => { const mail = generateMail('example@gmail.com', '测试邮件', '这是一封测试邮件'); sendMail(mail); }; sampleEmail();
在这里,我们首先使用 nodemailer.createTransport
创建了一个 SMTP Transporter。这个 transporter 将 smtp_credentials 对象作为属性进行属性设置,并使用 await transporter.sendMail
方法在内部发送电子邮件。
接下来,我们使用 generateMail
函数生成一个邮件对象,该对象包含发送者、接受者、电子邮件主题以及电子邮件 HTML 正文内容等信息。
最后,我们使用 sendMail
函数来实际发送电子邮件。
总结
本篇文章为大家介绍了如何在 Express 应用程序中发送电子邮件。我希望这篇文章能够帮助您更好的实现和使用电子邮件功能,并通过nodemailer库和配置 SMTP 服务来解决常见问题。如果您有任何问题或反馈,请随时留言,让我们一起讨论。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/652f54497d4982a6eb0704ff