接入数据库
This commit is contained in:
121
pages/user/test/EMAIL_CONFIG_FIX.md
Normal file
121
pages/user/test/EMAIL_CONFIG_FIX.md
Normal file
@@ -0,0 +1,121 @@
|
||||
# 注册邮件发送失败问题修复指南
|
||||
|
||||
## 🔍 问题描述
|
||||
|
||||
注册时出现错误:`Error sending confirmation email` (500 Internal Server Error)
|
||||
|
||||
**原因**:
|
||||
- Supabase 配置了 `ENABLE_EMAIL_AUTOCONFIRM=false`,需要发送确认邮件
|
||||
- SMTP 配置使用的是假服务(`supabase-mail`, `fake_mail_user`),无法发送邮件
|
||||
- 当 Supabase 尝试发送邮件时失败,返回 500 错误
|
||||
|
||||
## ✅ 解决方案
|
||||
|
||||
### 方案一:启用自动确认(推荐,开发环境)
|
||||
|
||||
修改 `supabase_pro/.env` 文件:
|
||||
|
||||
```env
|
||||
## Email auth
|
||||
ENABLE_EMAIL_SIGNUP=true
|
||||
ENABLE_EMAIL_AUTOCONFIRM=true # 改为 true,跳过邮件验证
|
||||
```
|
||||
|
||||
**优点**:
|
||||
- 注册后立即可以登录,无需邮件验证
|
||||
- 适合开发和测试环境
|
||||
|
||||
**缺点**:
|
||||
- 生产环境建议使用真实的邮件服务
|
||||
|
||||
---
|
||||
|
||||
### 方案二:配置真实的 SMTP 服务
|
||||
|
||||
修改 `supabase_pro/.env` 文件,配置真实的 SMTP 服务:
|
||||
|
||||
```env
|
||||
## Email auth
|
||||
ENABLE_EMAIL_SIGNUP=true
|
||||
ENABLE_EMAIL_AUTOCONFIRM=false
|
||||
SMTP_ADMIN_EMAIL=your-admin@example.com
|
||||
SMTP_HOST=smtp.example.com # 真实的 SMTP 服务器
|
||||
SMTP_PORT=587 # 或 465 (SSL)
|
||||
SMTP_USER=your-smtp-user
|
||||
SMTP_PASS=your-smtp-password
|
||||
SMTP_SENDER_NAME=Your App Name
|
||||
```
|
||||
|
||||
**常用 SMTP 服务**:
|
||||
- Gmail: `smtp.gmail.com:587`
|
||||
- 163: `smtp.163.com:465`
|
||||
- QQ: `smtp.qq.com:587`
|
||||
- SendGrid, Mailgun 等第三方服务
|
||||
|
||||
---
|
||||
|
||||
### 方案三:使用 Supabase 本地邮件服务(开发环境)
|
||||
|
||||
如果使用 Docker Compose 运行 Supabase,可以使用内置的邮件服务:
|
||||
|
||||
1. 确保 `supabase-mail` 服务正常运行
|
||||
2. 检查邮件服务日志:
|
||||
```bash
|
||||
docker-compose logs supabase-mail
|
||||
```
|
||||
3. 如果服务未运行,启动它:
|
||||
```bash
|
||||
docker-compose up -d supabase-mail
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔧 已实施的代码修复
|
||||
|
||||
已改进注册页面的错误处理:
|
||||
|
||||
1. **检查邮件发送失败错误**:如果返回 500 错误且错误信息包含 "confirmation email",会给出友好提示
|
||||
2. **即使邮件发送失败,用户可能已创建**:提示用户稍后尝试登录
|
||||
3. **改进错误提示**:更清晰的错误信息
|
||||
|
||||
---
|
||||
|
||||
## 📝 验证步骤
|
||||
|
||||
1. **修改配置后,重启 Supabase**:
|
||||
```bash
|
||||
cd supabase_pro
|
||||
docker-compose restart auth
|
||||
```
|
||||
|
||||
2. **测试注册**:
|
||||
- 尝试注册新用户
|
||||
- 如果使用 `ENABLE_EMAIL_AUTOCONFIRM=true`,应该立即可以登录
|
||||
- 如果使用真实 SMTP,检查邮箱是否收到确认邮件
|
||||
|
||||
3. **检查数据库**:
|
||||
```sql
|
||||
-- 检查 auth.users 表中是否有新用户
|
||||
SELECT id, email, email_confirmed_at, created_at
|
||||
FROM auth.users
|
||||
ORDER BY created_at DESC
|
||||
LIMIT 5;
|
||||
|
||||
-- 检查 ak_users 表中是否有对应记录
|
||||
SELECT id, email, username, created_at
|
||||
FROM ak_users
|
||||
ORDER BY created_at DESC
|
||||
LIMIT 5;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 推荐配置(开发环境)
|
||||
|
||||
```env
|
||||
## Email auth
|
||||
ENABLE_EMAIL_SIGNUP=true
|
||||
ENABLE_EMAIL_AUTOCONFIRM=true # 开发环境跳过邮件验证
|
||||
```
|
||||
|
||||
这样注册后可以立即登录,无需等待邮件确认。
|
||||
Reference in New Issue
Block a user