news 2026/9/15 22:33:52

open-saas 如何把邮件发送从 Dummy 提供方切换到 SendGrid 或 Mailgun 用于邮箱验证和密码重置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
open-saas 如何把邮件发送从 Dummy 提供方切换到 SendGrid 或 Mailgun 用于邮箱验证和密码重置

open-saas 如何把邮件发送从 Dummy 提供方切换到 SendGrid 或 Mailgun 用于邮箱验证和密码重置

【免费下载链接】open-saasA 100% free modern JS SaaS boilerplate (React, NodeJS, Prisma). Full-featured: Auth (email, google, github, slack, MS), Email sending, Background jobs, Landing page, Payments (Stripe, Polar.sh), Shadcn UI, S3 file upload. AI-ready with tailored AGENTS.md, skills, and Claude Code plugin. One cmd deploy. Powered by Wasp full-stack framework.项目地址: https://gitcode.com/GitHub_Trending/op/open-saas

open-saas 模板默认使用Dummy邮件提供方:它不真正发送邮件,而是把邮箱验证链接/令牌打印到服务端控制台,方便本地开发时手动点击完成注册。这个限制在上线前必须解决——根据 邮件发送指南 和 认证指南,使用Dummy提供方时应用无法执行生产构建,只有切换到 SendGrid 或 Mailgun 这类生产就绪的提供方后,邮箱验证和密码重置邮件才会真实发出。本文基于当前模板的实际代码结构,给出这条切换路径和验证方式。

Dummy 提供方在哪里、行为是什么

当前模板中,邮件配置独立在一个文件里:emailSender.wasp.ts。

export const emailSender: EmailSender = { // NOTE: "Dummy" provider is just for local development purposes. // Make sure to check the server logs for the email confirmation url (it will not be sent to an address)! // Once you are ready for production, switch to e.g. "SendGrid" or "Mailgun" providers. provider: "Dummy", defaultFrom: { name: "Open SaaS App", // When using a real provider, e.g. SendGrid, you must use the same email address that you configured your account to send out emails with! email: "me@example.com", }, };

该对象由 main.wasp.ts 导入后挂在应用的emailSender字段上,与指南中app.emailSender指的是同一份配置——只是当前模板(Wasp 2 写法)把它拆到了单独文件,而不是指南示例里的main.wasp内联写法。

认证侧的接线在 auth.wasp.ts:email是默认认证方式,其emailVerificationpasswordReset两项分别绑定了邮件内容函数:

const emailAuthMethod: NonNullable<AuthMethods["email"]> = { fromField: { name: "Open SaaS App", email: "me@example.com", }, emailVerification: { clientRoute: "EmailVerificationRoute", getEmailContentFn: getVerificationEmailContent, }, passwordReset: { clientRoute: "PasswordResetRoute", getEmailContentFn: getPasswordResetEmailContent, }, userSignupFields: getEmailUserFields, };

两封邮件的实际内容由 emails.ts 生成:验证邮件主题为Verify your email,正文包含verificationLink;重置邮件主题为Password reset,正文包含passwordResetLink。点击后分别落到/email-verification/password-reset路由。只要提供方配置正确,Wasp 会自动让 AuthUI 组件使用真实的发信通道,无需改动认证流程代码。

切换到 SendGrid

  1. 注册 SendGrid 账号,在其控制台的 API Keys 设置页创建并复制你的 API key(.env.server.example中的注释也指向同一入口)。
  2. 把 key 写入.env.server文件的SENDGRID_API_KEY变量。模板自带 .env.server.example 作为参照,其中已包含该变量:
SENDGRID_API_KEY=<你的 SendGrid API key>
  1. 修改 emailSender.wasp.ts:provider改为"SendGrid",并把defaultFrom.email改成你 SendGrid 账号中配置的发信地址:
export const emailSender: EmailSender = { provider: "SendGrid", defaultFrom: { name: "Open SaaS App", // Same email address you configured your SendGrid account to send emails with! email: "you@yourdomain.com", // 替换为你在 SendGrid 中配置的发信地址 }, };
  1. 同步修改 auth.wasp.ts 中emailAuthMethod.fromField.email,使用同一个发信地址。

指南对此有明确警告:使用 SendGrid 时,from地址必须与你在 SendGrid 账号中配置的发信地址一致,否则发信会失败。这是 SendGrid 与 Mailgun 两条路径共同的要求。

切换到 Mailgun(替代路径)

如果你的账号在 Mailgun 而不是 SendGrid,流程类似,只是多一个发信域名变量:

  1. 创建 Mailgun 账号,在 API Keys 设置页创建新的 API key,写入.env.serverMAILGUN_API_KEY
  2. 在 Mailgun 的 Domains 设置页创建(并验证)一个发信域名,写入.env.serverMAILGUN_DOMAIN
  3. emailSender.wasp.ts 中provider改为"Mailgun"defaultFrom.email与 auth.wasp.ts 中fromField.email同样改成你的 Mailgun 发信地址。
MAILGUN_API_KEY=<你的 Mailgun API key> MAILGUN_DOMAIN=<你的 Mailgun 发信域名>

模板的.env.server.example目前只列出了SENDGRID_API_KEY示例;Mailgun 的两个变量按指南要求直接加到.env.server即可。

验证切换是否生效

本地开发验证:启动应用后用一个新邮箱注册。

  • 切换前(Dummy):收件箱不会收到任何邮件,验证链接/令牌只会出现在服务端日志里,需要手动从日志复制后打开完成验证——这是 认证指南 描述的行为。
  • 切换后(SendGrid/Mailgun):收件箱应收到主题为Verify your email的邮件,点击链接进入邮箱验证页完成验证;随后走一次忘记密码流程,应收到主题为Password reset的邮件,点击链接进入密码重置页完成重置。

生产构建验证:两份文档都明确 Dummy 提供方下应用无法构建,因此切换到 SendGrid 或 Mailgun 后生产构建能够完成,本身就是一项成功判定。

限制与边界

  • email认证方式依赖邮件提供方,Dummy 仅用于本地开发,不能用于生产。
  • 两处发件地址(emailSender.defaultFrom.emailemailAuthMethod.fromField.email)都要与提供方账号中配置的发信地址保持一致,指南和源码注释均强调了这一点。
  • 指南末尾提示:如需了解其他提供方(如 SMTP)的细节,可查阅 Wasp 官方的邮件文档,指南原文给出了对应链接。

【免费下载链接】open-saasA 100% free modern JS SaaS boilerplate (React, NodeJS, Prisma). Full-featured: Auth (email, google, github, slack, MS), Email sending, Background jobs, Landing page, Payments (Stripe, Polar.sh), Shadcn UI, S3 file upload. AI-ready with tailored AGENTS.md, skills, and Claude Code plugin. One cmd deploy. Powered by Wasp full-stack framework.项目地址: https://gitcode.com/GitHub_Trending/op/open-saas

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/15 22:32:24

Halcon芯片缺角检测:亚像素几何验证与产线稳定实践

1. 项目概述&#xff1a;为什么芯片缺角检测必须用 Halcon 而不是 OpenCV 或传统阈值法&#xff1f;在半导体封装产线的实际运行中&#xff0c;“检测、分选、固晶”这三个工序是环环相扣的硬性流水节拍。其中“缺角检测”看似只是图像识别中的一个子任务&#xff0c;但它的误判…

作者头像 李华
网站建设 2026/9/15 22:28:59

Open Agents 会话管理指南:如何创建、恢复与归档编码任务

Open Agents 会话管理指南&#xff1a;如何创建、恢复与归档编码任务 【免费下载链接】open-agents An open source template for building cloud agents. 项目地址: https://gitcode.com/GitHub_Trending/op/open-agents Open Agents 是一个开源的云编码智能体&#xf…

作者头像 李华
网站建设 2026/9/15 22:28:18

大模型Prompt注入攻击防御与测试实践

1. Prompt注入攻击的本质与危害在大模型应用开发中&#xff0c;Prompt注入攻击已成为最隐蔽且破坏性最强的安全威胁之一。这种攻击通过精心构造的输入文本&#xff0c;诱导模型执行非预期操作或泄露敏感信息。我曾在金融领域的大模型项目中&#xff0c;亲眼见证过攻击者仅用三行…

作者头像 李华
网站建设 2026/9/15 22:27:27

软考软件设计师安全与加密认证技术核心考点解析

1. 软考软件设计师安全与加密认证技术全景解析作为软考软件设计师考试的核心模块&#xff0c;计算机安全与加密认证技术占据着举足轻重的地位。根据近5年真题统计&#xff0c;该模块平均占比达18-22分&#xff0c;涉及知识点多达37个&#xff0c;是考生普遍反映的难点集中区。我…

作者头像 李华