# 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邮箱认证
1. [登录RDS管理控制台](https://console.huaweicloud.com/rds/#/rds/management/list)。
2. 单击管理控制台左上角的![](https://support.huaweicloud.com/bestpractice-rds-pg/zh-cn_image_0000002606863935.png)，选择区域。
3. 在左侧导航栏，选择"AI应用开发平台"，在应用列表中找到目标Supabase应用。
4. 单击目标Supabase应用名称，进入RDS Supabase详情页。
5. 在左侧导航栏，选择"Auth配置"，进入身份验证配置页面。
6. 在"身份验证提供商"区域，单击邮箱右侧的![](https://support.huaweicloud.com/bestpractice-rds-pg/zh-cn_image_0000002776373882.png)开关，进入邮箱配置面板。
7. 在邮箱配置面板中，配置相关参数，详见[表1]。
   图1邮箱配置面板   
   ![](https://support.huaweicloud.com/bestpractice-rds-pg/zh-cn_image_0000002721061185.png "点击放大")
    表1邮箱配置参数说明 
   | 参数       | 说明                      | 示例值              |
   |:---|:---|:---|
   | 启用外部邮箱登录 | 打开开关，启用邮箱注册功能。          | 开启                |
   | SMTP主机     | 填写SMTP服务器地址。             | 192.168.1.1        |
   | SMTP端口    | 填写465（SSL加密端口）。         | 465                |
   | SMTP用户名  | 填写您的邮箱地址。              | test_mail@spe.com  |
   | SMTP密码    | 获取的邮箱授权码（非邮箱登录密码）。       | 授权码              |
   | 管理员邮箱     | 填写管理员邮箱地址，通常与SMTP用户名相同。 | test_mail@spe.com |
   | 邮件发件人姓名    | 填写发件人显示名称，收件人会看到该名称。    | RDS Supabase      |
      
   
8. 配置完成后单击"确定"，等待配置生效。
 
#### 步骤二：测试邮箱服务
配置完成后，您可以通过示例应用验证全部邮箱认证功能，包括注册、邮箱确认、登录、Magic Link免密登录、密码重置和邮箱变更。
图2测试邮箱功能   
![](https://support.huaweicloud.com/bestpractice-rds-pg/zh-cn_image_0000002721058777.png "点击放大")
1. **参考[RDS Supabase邮箱认证演示源码配置指导](https://support.huaweicloud.com/bestpractice-rds-pg/rds_pg_ai_0003.html)，下载示例代码。**
2. **配置环境变量。**
   解压后进入项目目录，根据.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)
   ```
   
3. 注册邮箱。
   1. 在邮箱登录页面，单击注册标签页。
   
   2. 输入邮箱地址（如test_mail@spe.com）和密码，单击创建账户。
   
   3. 注册时页面会显示密码强度指示器，帮助您设置安全的密码。
   
   4. 注册成功后页面提示"注册成功！请检查您的邮箱以确认账户"。
    
4. 确认邮箱。
   1. 打开Foxmail客户端，登录test_mail@spe.com邮箱。
   
   2. 找到来自RDS Supabase的确认邮件，单击邮件中的Confirm your email address链接完成邮箱验证。
   
   3. 确认后浏览器将自动跳转回应用页面。
    
5. 登录邮箱。
   1. 在登录页面切换到登录标签页。
   
   2. 输入注册的邮箱和密码，单击"登录"。
   
   3. 登录成功后进入Dashboard界面，界面显示用户头像、用户ID、邮箱地址、注册时间、最后登录时间。
    
6. Magic Link免密登录。
   1. 退出登录后，在登录页面切换到Magic Link标签页。
   
   2. 输入已注册的邮箱地址（test_mail@spe.com），单击"Magic Link 登录"。
   
   3. 页面提示"Magic Link已发送至您的邮箱，请单击邮件中的链接完成登录。"
   
   4. 在Foxmail中查收Magic Link邮件，单击邮件中的"Log In"链接。
   
   5. 浏览器自动跳转并完成登录，进入Dashboard界面。
    
7. 重置邮箱密码。 通过邮件链接重置（未登录状态）。
   1. 在登录页面单击"忘记密码"。
   
   2. 输入邮箱地址（test_mail@spe.com），单击"发送重置链接"。
   
   3. 界面提示"密码重置邮件已发送，请检查您的邮箱。"
   
   4. 在Foxmail中查收密码重置邮件，单击邮件中的"Reset Password"链接。
   
   5. 浏览器跳转到密码重置页面，输入新密码并提交。
   
   6. 密码更新成功后自动返回登录页面，使用新密码即可登录。
    
8. 更换邮箱。
   1. 登录后在Dashboard界面，单击"更换邮箱"。
   
   2. 输入新的邮箱地址，单击发送确认邮件。
   
   3. 系统向新邮箱发送确认邮件。同时Dashboard显示新邮箱的待确认状态。
   
   4. 在新邮箱中查收确认邮件，单击邮件中的链接完成邮箱更换。
   
   5. 更换成功后，Dashboard显示新的邮箱地址。后续请使用新邮箱登录。
    
 
#### 步骤三：自定义邮件模板（可选）
默认情况下，Supabase使用内置的英文邮件模板。如果您需要自定义邮件内容，RDS Supabase支持两种方案配置邮件模板。
Supabase支持的邮件模板请参见[表2]。
 表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引用。
1. 创建邮件模板文件。
   根据需要创建邮件模板HTML文件，各类模板的参考内容如下：
   注册确认邮件：
   ```
   <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>
   ```
   
2. 上传模板到Supabase Storage。
   1. 在RDS Supabase详情页，进入Supabase Dashboard。
   
   2. 在Supabase Dashboard左侧导航栏单击"Storage"，单击"Create a new bucket"，创建一个Bucket。
      - Bucket name：填写Bucket名称，例如email-bucket。
      
      - Public bucket：打开开关，设置为公开访问。
       
   
   3. 单击"Create"完成创建。进入该Bucket后，单击右上角的"Upload files"，将邮件模板HTML文件上传到Bucket中。
    
3. 配置模板URL。
   1. 上传完成后，邮件模板的访问URL格式为：
      ```
      https://<Supabase内网IP>/storage/v1/object/public/<BucketName>/<文件名>
      ```
      例如，注册确认模板的URL为：
      ```
      https://<Supabase内网IP>/storage/v1/object/public/email-bucket/confirm-signup.html
      ```
      
   
   2. 返回RDS Supabase控制台，在左侧导航栏，选择"Auth配置"。
   
   3. 在"邮箱模板配置"区域，在各模板URL字段中填写上述URL。
   
   4. 单击"保存"，等待Auth服务重启完成。
    
**方案二：通过控制台直接填写模板内容（推荐）**
该方案直接填写各模板的HTML内容，无需额外搭建Storage服务。如果同时配置了方案一（URL）和方案二（本地内容），方案二优先级更高。
1. 在RDS Supabase控制台的"Auth配置 \> 邮箱模板配置"页面，找到各邮件类型的模板内容输入框。
2. 将自定义HTML内容填入对应输入框（可参考"**[方案一：通过URL配置远程模板]**"中的模板示例）。
3. 配置完成后单击"保存"，等待Auth服务重启，模板立即生效。
 
#### 步骤四：配置邮件主题
除了邮件正文模板，您还可以自定义各类型邮件的主题。
在RDS Supabase控制台的"Auth配置 \> 邮件配置"页面，填写各邮件类型的主题，如[表3]所示。
 表3邮件主题 
| 邮件类型        | 主题示例                           |
|:---|:---|
| 注册确认         | Confirm your email address      |
| 邀请         | Accept the invite              |
| 密码重置         | Reset Password                |
| 邮箱变更       | Change email address          |
| Magic Link | Your Magic Link                |
| 重新认证          | Confirm Your Reauthentication |
   
#### 步骤五：验证模板生效
配置完成后，重新执行[步骤二：测试邮箱服务]中的测试流程，在Foxmail中查收邮件，确认邮件主题和正文内容已更新为自定义模板。
