You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
# 邮件客户端 Android App
基于SMTP/POP3协议的Android邮件客户端, 配合Flask邮件服务器使用。
## 功能特性
- 用户注册/登录( 通过HTTP API)
- **通过POP3协议接收邮件**
- **通过SMTP协议发送邮件**
- **通过POP3协议删除邮件**
- 通讯录管理( 通过HTTP API)
- 服务器配置
## 协议使用说明
### 邮件功能( SMTP/POP3)
| 功能 | 协议 | 说明 |
|------|------|------|
| 发送邮件 | SMTP | 连接SMTP服务器(端口2525)发送 |
| 接收邮件 | POP3 | 连接POP3服务器(端口1100)获取 |
| 删除邮件 | POP3 | 通过POP3的DELE命令删除 |
### 其他功能( HTTP API)
| 功能 | 接口 |
|------|------|
| 用户登录 | POST /api/auth/login |
| 用户注册 | POST /api/auth/register |
| 通讯录管理 | /api/contacts |
## 项目结构
```
EmailClientAndroid/
├── app/src/main/java/com/example/emailclient/
│ ├── data/ # 数据模型
│ ├── network/
│ │ ├── SmtpClient.kt # SMTP客户端(发送邮件)
│ │ ├── Pop3Client.kt # POP3客户端(接收/删除邮件)
│ │ ├── ApiService.kt # HTTP API(认证/通讯录)
│ │ └── RetrofitClient.kt
│ └── ui/ # 界面层
└── app/src/main/res/ # 资源文件
```
## SMTP发送邮件流程
```
1. 连接SMTP服务器 (端口2525)
2. 接收: 220 服务器就绪
3. 发送: EHLO localhost
4. 接收: 250 OK
5. 发送: MAIL FROM:<发件人邮箱>
6. 接收: 250 OK
7. 发送: RCPT TO:<收件人邮箱>
8. 接收: 250 OK
9. 发送: DATA
10. 接收: 354 开始输入
11. 发送: 邮件头和正文,以"."结束
12. 接收: 250 OK
13. 发送: QUIT
```
## POP3接收邮件流程
```
1. 连接POP3服务器 (端口1100)
2. 接收: +OK 服务器就绪
3. 发送: USER 用户名
4. 接收: +OK
5. 发送: PASS 密码
6. 接收: +OK 登录成功
7. 发送: STAT
8. 接收: +OK 邮件数量 总大小
9. 发送: UIDL (获取邮件唯一ID)
10. 发送: RETR n (获取第n封邮件)
11. 发送: DELE n (删除第n封邮件)
12. 发送: QUIT (确认删除并断开)
```
## 配置说明
在App设置页面配置:
- 服务器地址: 邮件服务器IP
- 模拟器使用 `10.0.2.2` 访问本机
- 真机使用服务器实际IP
- SMTP端口: 默认 `2525`
- POP3端口: 默认 `1100`
- API端口: 默认 `5000`
## 编译运行
1. 启动服务端:
```bash
cd email_system
pip install -r requirements.txt
python app.py
```
2. 用Android Studio打开`EmailClientAndroid`目录
3. 同步Gradle依赖
4. 在设置中配置服务器地址
5. 运行应用
## 使用流程
1. 注册/登录账号
2. 输入密码验证身份( 用于POP3认证)
3. 自动通过POP3获取收件箱邮件
4. 点击邮件查看详情
5. 长按邮件可删除( 通过POP3)
6. 点击右下角按钮写邮件( 通过SMTP发送)