2025-03-19-Vercel邮件代发API-1.png

在现代Web应用开发中,邮件发送功能几乎是不可或缺的一部分。无论是用户注册验证、密码重置,还是系统通知,都需要一个可靠的邮件发送服务。然而,搭建和维护一个邮件服务器并不是一件容易的事情。这就是为什么我决定开发这个基于Vercel Serverless Functions的邮件发送API服务。

作为一个开发者,我深知在项目中集成邮件功能的痛点。传统的解决方案要么需要自己维护服务器,要么需要付费使用第三方服务。而这个项目提供了一个完全免费、易于部署和使用的解决方案。让我们一起来看看这个服务能为你带来什么。

为什么选择Vercel?

在开发这个服务时,我选择Vercel作为部署平台是经过深思熟虑的:

  • 零服务器维护:Vercel的Serverless架构让我们无需关心服务器运维
  • 自动扩展:能够自动处理流量峰值,无需手动扩容
  • 全球CDN:依托Vercel的边缘网络,实现全球快速响应
  • 免费额度慷慨:个人项目完全够用,不会产生额外支出

功能特点

  • 基于Nodemailer的可靠邮件发送
  • 支持HTML富文本和纯文本邮件格式
  • 内置CORS支持,轻松实现跨域调用
  • 完善的错误处理和日志记录
  • 内置速率限制,防止滥用
  • 支持自定义发件人名称

实战应用

让我们通过一个实际的例子来看看如何使用这个API:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// 发送一封HTML格式的邮件
async function sendWelcomeEmail(userEmail, username) {
try {
const response = await fetch('你的Vercel部署地址/api', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
to: userEmail,
subject: '欢迎加入我们的平台!',
html: `
<h2>你好,${username}!</h2>
<p>欢迎成为我们的新用户!</p>
<p>如果你有任何问题,随时都可以联系我们的支持团队。</p>
`,
from_name: '你的网站名称'
})
});

const result = await response.json();
console.log('邮件发送成功:', result);
} catch (error) {
console.error('邮件发送失败:', error);
}
}

部署指南

准备工作

  1. 首先确保你已经:

    • 安装了Node.js(推荐v14或更高版本)
    • 有一个Vercel账号
    • 准备好了一个邮箱账号(推荐使用QQ邮箱或Gmail)
  2. 获取邮箱授权码:

    • 对于QQ邮箱:设置 -> 账户 -> POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
    • 对于Gmail:设置 -> 安全性 -> 应用专用密码

部署步骤

  1. 克隆项目:

    1
    2
    git clone https://github.com/Loki2077/vercel-email.git
    cd vercel-email
  2. 安装依赖:

    1
    npm install
  3. 配置环境变量:
    创建.env文件(如果是公开仓库,请确保将此文件添加到.gitignore)

    1
    2
    3
    4
    5
    6
    [email protected]
    MAIL_PASS=your-password-or-app-specific-password
    MAIL_HOST=smtp.qq.com # 使用QQ邮箱为例
    MAIL_PORT=465
    MAIL_SECURE=true
    RATE_LIMIT_MAX_REQUESTS=10 # 可选:设置速率限制
  4. 本地测试:

    1
    vercel dev
  5. 部署到Vercel:

    1
    vercel

使用建议

基于我的使用经验,这里有一些建议可以帮助你更好地使用这个服务:

  1. 错误重试

    • 实现指数退避重试机制
    • 对临时性错误进行适当的重试
    • 永久性错误(如无效邮箱)及时通知用户
  2. 监控和告警

    • 设置邮件发送失败的监控
    • 定期检查API的可用性
    • 对异常情况及时响应
  3. 安全性考虑

    • 使用环境变量存储敏感信息
    • 实现请求来源验证
    • 合理设置速率限制

常见问题解答

Q: 为什么选择使用QQ邮箱?
A: QQ邮箱提供稳定的SMTP服务,且在国内访问速度快,配置简单,是个人项目的理想选择。

Q: 免费版本有什么限制?
A: Vercel的免费版本完全够用于个人项目,主要限制在于:

  • 每月100GB带宽
  • 每天100个Serverless Function调用
  • 部署次数限制

Q: 如何处理大量邮件发送需求?
A: 对于需要批量发送邮件的场景,建议:

  • 实现队列机制
  • 错峰发送
  • 考虑使用专业的邮件服务

未来规划

这个项目还在持续改进中,计划添加的功能包括:

  • 邮件模板支持
  • 更多的邮件服务商集成
  • 发送统计和分析
  • 更完善的管理界面

结语

这个项目源于我自己的实际需求,希望能帮助到有类似需求的开发者。如果你在使用过程中遇到任何问题,或者有好的建议,欢迎在GitHub上提出issue或PR。让我们一起把这个工具变得更好!

许可证

本项目采用MIT许可证 - 查看LICENSE文件了解详情。