# 邮件客户端 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发送)