返回

使用Express + Mongoose + Nodemailer轻松发送QQ邮件!

前端







**引言** 

在现代互联网生活中,电子邮件作为一种便捷、正式的通讯方式,发挥着至关重要的作用。无论是个人交流还是企业协作,电子邮件都能满足各种场景下的通信需求。

本文将手把手教你如何利用Express、Mongoose和Nodemailer这三个强大的Node.js框架,实现发送QQ邮件。你将学会如何设置Node.js环境、安装必要的依赖项、配置QQ邮箱SMTP服务,以及使用Express和Mongoose构建简单的电子邮件发送API。

**环境搭建** 

1. **安装Node.js** 

   首先,确保你的计算机上已安装Node.js。Node.js是一个流行的JavaScript运行时环境,可以运行JavaScript代码。你可以从Node.js官方网站下载并安装Node.js2. **安装Express** 

   Express是一个流行的Node.js框架,可以帮助你轻松构建web应用程序。你可以使用npm命令安装Express:

npm install express


3. **安装Mongoose** 

Mongoose是一个流行的Node.js框架,可以帮助你连接和操作MongoDB数据库。你可以使用npm命令安装Mongoose:

npm install mongoose


4. **安装Nodemailer** 

Nodemailer是一个流行的Node.js库,可以帮助你发送电子邮件。你可以使用npm命令安装Nodemailer:

npm install nodemailer


**配置QQ邮箱SMTP服务** 

1. **登录QQ邮箱** 

登录你的QQ邮箱,进入「设置」页面,找到「POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务」选项,并将其开启。

2. **获取授权码** 

在「POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务」页面中,找到「授权码」选项,点击「获取授权码」,并妥善保存生成的授权码。

3. **记录QQ邮箱地址** 

记录你的QQ邮箱地址,你将需要在代码中使用它。

**编写代码** 

1. **创建项目** 

创建一个新的Node.js项目,并创建一个名为app.js的文件。

2. **导入必要的库** 

在app.js文件中,导入必要的库:

const express = require('express');
const mongoose = require('mongoose');
const nodemailer = require('nodemailer');


3. **连接数据库** 

使用Mongoose连接到MongoDB数据库:

mongoose.connect('mongodb://localhost/test');


4. **定义邮件发送模型** 

定义一个名为Email的邮件发送模型:

const EmailSchema = new mongoose.Schema({
from: String,
to: String,
subject: String,
text: String,
html: String
});
const Email = mongoose.model('Email', EmailSchema);


5. **创建邮件发送路由** 

创建一个新的Express路由,用于发送电子邮件:

app.post('/send-email', async (req, res) => {
const { from, to, subject, text, html } = req.body;

 const transporter = nodemailer.createTransport({
   service: 'qq',
   port: 465,
   secure: true, // true for 465, false for other ports
   auth: {
     user: 'your_qq_email_address', // generated ethereal user
     pass: 'your_qq_email_authorization_code', // generated ethereal password
   },
 });

 const mailOptions = {
   from: from,
   to: to,
   subject: subject,
   text: text,
   html: html,
 };

 transporter.sendMail(mailOptions, (error, info) => {
   if (error) {
     res.status(500).send(error);
   } else {
     res.status(200).send('Email sent successfully');
   }
 });

});


6. **启动服务器** 

启动Express服务器:

app.listen(3000, () => {
console.log('Server listening on port 3000');
});


**测试** 

1. **发送电子邮件** 

使用Postman或其他HTTP客户端工具,向`/send-email`路由发送POST请求,并在请求体中提供必要的参数,如发件人、收件人、主题、正文和HTML内容。

2. **检查收件箱** 

检查你的QQ邮箱收件箱,确保你收到了发送的电子邮件。

**结语** 

恭喜你,你已经成功学会了如何使用Express、Mongoose和Nodemailer发送QQ邮件。这将使你能够轻松构建发送电子邮件的应用程序或服务。