链接复制成功!
RDS Supabase AI应用对接SMTP服务器并开启邮箱认证
操作场景
RDS Supabase支持配置SMTP邮件服务器,为您的应用提供邮箱注册、登录验证、Magic Link免密登录、密码重置和邮箱变更等邮件认证能力。本文以Foxmail企业邮箱(test_mail@spe.com)为例,介绍如何配置RDS Supabase邮件服务、启用邮箱认证、通过示例应用验证全部邮件功能,以及通过两种方案自定义邮件模板。
前提条件
- 已购买RDS Supabase实例且实例状态为运行中。
- 本文以Foxmail企业邮箱为例进行演示,测试邮箱为test_mail@spe.com。
操作步骤
步骤一:配置RDS Supabase邮箱认证
- 登录RDS管理控制台。
- 单击管理控制台左上角的
,选择区域。 - 在左侧导航栏,选择“AI应用开发平台”,在应用列表中找到目标Supabase应用。
- 单击目标Supabase应用名称,进入RDS Supabase详情页。
- 在左侧导航栏,选择“Auth配置”,进入身份验证配置页面。
- 在“身份验证提供商”区域,单击邮箱右侧的
开关,进入邮箱配置面板。 - 在邮箱配置面板中,配置相关参数,详见表1。 图1 邮箱配置面板
- 配置完成后单击“确定”,等待配置生效。
步骤二:测试邮箱服务
配置完成后,您可以通过示例应用验证全部邮箱认证功能,包括注册、邮箱确认、登录、Magic Link免密登录、密码重置和邮箱变更。
- 参考RDS Supabase邮箱认证演示源码配置指导,下载示例代码。
- 配置环境变量。
解压后进入项目目录,根据.env.example创建.env文件,填写RDS Supabase实例的连接信息:
# 替换为您的RDS Supabase外网连接地址 VITE_SUPABASE_URL=your-supabase-url(http://10.83.35.197:8443) # 替换为您的RDS Supabase Anon Key VITE_SUPABASE_ANON_KEY=your-supabase-anon-key(default-anon-api-key)
- 注册邮箱。
- 在邮箱登录页面,单击注册标签页。
- 输入邮箱地址(如test_mail@spe.com)和密码,单击创建账户。
- 注册时页面会显示密码强度指示器,帮助您设置安全的密码。
- 注册成功后页面提示“注册成功!请检查您的邮箱以确认账户”。
- 确认邮箱。
- 打开Foxmail客户端,登录test_mail@spe.com邮箱。
- 找到来自RDS Supabase的确认邮件,单击邮件中的Confirm your email address链接完成邮箱验证。
- 确认后浏览器将自动跳转回应用页面。
- 登录邮箱。
- 在登录页面切换到登录标签页。
- 输入注册的邮箱和密码,单击“登录”。
- 登录成功后进入Dashboard界面,界面显示用户头像、用户ID、邮箱地址、注册时间、最后登录时间。
- Magic Link免密登录。
- 退出登录后,在登录页面切换到Magic Link标签页。
- 输入已注册的邮箱地址(test_mail@spe.com),单击“Magic Link 登录”。
- 页面提示“Magic Link已发送至您的邮箱,请单击邮件中的链接完成登录。”
- 在Foxmail中查收Magic Link邮件,单击邮件中的“Log In”链接。
- 浏览器自动跳转并完成登录,进入Dashboard界面。
- 重置邮箱密码。
- 在登录页面单击“忘记密码”。
- 输入邮箱地址(test_mail@spe.com),单击“发送重置链接”。
- 界面提示“密码重置邮件已发送,请检查您的邮箱。”
- 在Foxmail中查收密码重置邮件,单击邮件中的“Reset Password”链接。
- 浏览器跳转到密码重置页面,输入新密码并提交。
- 密码更新成功后自动返回登录页面,使用新密码即可登录。
- 更换邮箱。
- 登录后在Dashboard界面,单击“更换邮箱”。
- 输入新的邮箱地址,单击发送确认邮件。
- 系统向新邮箱发送确认邮件。同时Dashboard显示新邮箱的待确认状态。
- 在新邮箱中查收确认邮件,单击邮件中的链接完成邮箱更换。
- 更换成功后,Dashboard显示新的邮箱地址。后续请使用新邮箱登录。
步骤三:自定义邮件模板(可选)
默认情况下,Supabase使用内置的英文邮件模板。如果您需要自定义邮件内容,RDS Supabase支持两种方案配置邮件模板。
Supabase支持的邮件模板请参见表2。
| 模板类型 | 用途 | 占位符 |
|---|---|---|
| confirmation | 注册确认邮件 | {{ .ConfirmationURL }}、{{ .Token }} |
| invite | 邀请用户邮件 | {{ .ConfirmationURL }}、{{ .Token }}、{{ .SiteURL }} |
| recovery | 密码重置邮件 | {{ .ConfirmationURL }}、{{ .Token }} |
| email_change | 邮箱变更确认邮件 | {{ .ConfirmationURL }}、{{ .Token }}、{{ .Email }}、{{ .NewEmail }} |
| magic_link | Magic Link登录邮件 | {{ .ConfirmationURL }}、{{ .SiteURL }} |
| reauthentication | 重新认证邮件 | {{ .Token }} |
- {{ .ConfirmationURL }}:确认链接,Supabase发送邮件时自动替换为实际URL。
- {{ .Token }}:验证码,6位数字。
- {{ .SiteURL }}:站点URL。
- {{ .Email }}:用户当前邮箱地址。
- {{ .NewEmail }}:用户请求变更的新邮箱地址。
方案一:通过URL配置远程模板
该方案将自定义HTML模板文件托管在Supabase Storage中,通过URL引用。
- 创建邮件模板文件。
注册确认邮件:
<h2>Confirm Your Email via Huawei Cloud RDS Supabase</h2> <p>Follow this link to confirm your user with Email:</p> <p><a href="{{ .ConfirmationURL }}">Confirm your email address</a></p> <p>Alternatively, enter the code: {{ .Token }}</p> <p>Attention: The default validity period of the link and code is 1 hour.</p>邀请邮件:
<h2>You have been invited via Huawei Cloud RDS Supabase</h2> <p>You have been invited to create a user on <a href="{{ .SiteURL }}">{{ .SiteURL }}</a>. Follow this link to accept the invite:</p> <p><a href="{{ .ConfirmationURL }}">Accept the invite</a></p> <p>Alternatively, enter the code: {{ .Token }}</p> <p>Attention: The default validity period of the link and code is 1 hour.</p>Magic Link邮件:
<h2>Your Magic Link via Huawei Cloud RDS Supabase</h2> <p>Follow this link to direct login <a href="{{ .SiteURL }}">{{ .SiteURL }}</a></p> <p><a href="{{ .ConfirmationURL }}">Log In</a></p> <p>Attention: The default validity period of the link and code is 1 hour.</p>邮箱变更邮件:
<h2>Confirm Your Email Change via Huawei Cloud RDS Supabase</h2> <p>Follow this link to confirm the update of your email from {{ .Email }} to {{ .NewEmail }}:</p> <p><a href="{{ .ConfirmationURL }}">Change email address</a></p> <p>Alternatively, enter the code: {{ .Token }}</p> <p>Attention: The default validity period of the link and code is 1 hour.</p>密码重置邮件:
<h2>Reset Your Password via Huawei Cloud RDS Supabase</h2> <p>Follow this link to reset the password for your user:</p> <p><a href="{{ .ConfirmationURL }}">Reset Password</a></p> <p>Alternatively, enter the code: {{ .Token }}</p> <p>Attention: The default validity period of the link and code is 1 hour.</p>重新认证邮件:
<h2>Confirm Your Reauthentication via Huawei Cloud RDS Supabase</h2> <p>Enter the code: {{ .Token }}</p> <p>Attention: The default validity period of the link and code is 1 hour.</p> - 上传模板到Supabase Storage。
- 在RDS Supabase详情页,进入Supabase Dashboard。
- 在Supabase Dashboard左侧导航栏单击“Storage”,单击“Create a new bucket”,创建一个Bucket。
- Bucket name:填写Bucket名称,例如email-bucket。
- Public bucket:打开开关,设置为公开访问。
- 单击“Create”完成创建。进入该Bucket后,单击右上角的“Upload files”,将邮件模板HTML文件上传到Bucket中。
- 配置模板URL。
- 上传完成后,邮件模板的访问URL格式为:
https://<Supabase内网IP>/storage/v1/object/public/<BucketName>/<文件名>
例如,注册确认模板的URL为:
https://<Supabase内网IP>/storage/v1/object/public/email-bucket/confirm-signup.html
- 返回RDS Supabase控制台,在左侧导航栏,选择“Auth配置”。
- 在“邮箱模板配置”区域,在各模板URL字段中填写上述URL。
- 单击“保存”,等待Auth服务重启完成。
- 上传完成后,邮件模板的访问URL格式为:
方案二:通过控制台直接填写模板内容(推荐)
该方案直接填写各模板的HTML内容,无需额外搭建Storage服务。如果同时配置了方案一(URL)和方案二(本地内容),方案二优先级更高。
- 在RDS Supabase控制台的“Auth配置 > 邮箱模板配置”页面,找到各邮件类型的模板内容输入框。
- 将自定义HTML内容填入对应输入框(可参考“方案一:通过URL配置远程模板”中的模板示例)。
- 配置完成后单击“保存”,等待Auth服务重启,模板立即生效。
步骤四:配置邮件主题
除了邮件正文模板,您还可以自定义各类型邮件的主题。
在RDS Supabase控制台的“Auth配置 > 邮件配置”页面,填写各邮件类型的主题,如表3所示。
步骤五:验证模板生效
配置完成后,重新执行步骤二:测试邮箱服务中的测试流程,在Foxmail中查收邮件,确认邮件主题和正文内容已更新为自定义模板。