本项目可以自动将12306的车票信息邮件转换为在线日历,支持日历订阅功能。当收到12306的车票邮件时,程序会自动解析并生成包含完整行程信息的日历文件。
本项目完成由 AI 生成,遇到问题不要提issues,因为作者本人也不会写代码,请自行修改或者发给GPT解决
- 自动监控QQ邮箱中的12306车票邮件
- 智能解析车票信息(车次、时间、座位等)
- 自动查询列车到站时间
- 生成标准格式的ICS日历文件
- 支持在线日历订阅
- 提供Docker部署支持
- 实时监听新邮件(使用 IMAP IDLE)
- 可通过 CalDAV 将事件直接写入在线日历,实现秒级同步
- 修复到站时间查询功能
- 修正日期格式转换(从"年月日"格式转换为"YYYY-MM-DD"格式)
- 修正站名处理(自动移除站名中的"站"字)
- 优化查询参数传递
- 改进邮件监控机制
- 扩展 IMAP IDLE 通知检测(支持 EXISTS、RECENT、FETCH)
- 添加本地文件同步检查
- 自动重新处理丢失的日历文件
- 增强日志记录
- 添加更详细的调试信息
- 统一日志格式(使用标签标识不同类型的日志)
- 记录关键操作的输入输出参数
- 实现 IMAP IDLE 实时邮件监听
- 添加邮件去重机制,避免重复处理
- 支持测试模式,可配置测试用发件人
- 优化错误处理和日志记录
- 简化 Docker 配置
- 支持Docker部署
- 添加日历订阅功能
- 实现自动查询到站时间
- 支持QQ邮箱监控
- Docker
- Docker Compose
- QQ邮箱(用于接收12306邮件)
创建 .env 文件,添加以下配置:
EMAIL_USERNAME=你的QQ邮箱地址
EMAIL_PASSWORD=你的QQ邮箱授权码 # 注意:这里需要使用QQ邮箱的授权码,不是登录密码
TARGET_SENDER=12306@rails.com.cn # 12306官方邮件地址
CALDAV_URL=https://caldav.icloud.com/
CALDAV_USERNAME=你的iCloud邮箱地址
CALDAV_PASSWORD=你的iCloud应用专用密码
CALDAV_CALENDAR_NAME=可选,指定要写入的日历获取QQ邮箱授权码:
- 登录QQ邮箱
- 设置 -> 账户 -> POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
- 开启POP3/SMTP服务,获取授权码
# 克隆项目
git clone <项目地址>
cd 12306ics
# 编辑配置文件,填入邮箱信息
vim .env
# 构建并启动容器
docker-compose up -d
# 查看运行状态
docker-compose ps
# 查看日志
docker-compose logs -f如果未配置 CalDAV,你仍可以订阅生成的 ICS 文件:
http://服务器IP:2306/ticket
支持的日历应用:
- Apple Calendar
- Google Calendar
- Outlook
- 其他支持ICS订阅的日历应用
启用 CalDAV 后,事件会直接写入指定的 iCloud 或其他 CalDAV 日历,可与手机使用的 iCloud 账户不同,只需在 .env 中提供对应的登录信息。
- 确保12306的订票邮件发送到配置的QQ邮箱
- 服务器需要开放2306端口
- 首次运行时需要等待一段时间下载Playwright浏览器
- 可以通过修改
.env中的TARGET_SENDER来进行测试:# 测试模式 TARGET_SENDER=你的测试邮箱 # 生产模式 TARGET_SENDER=12306@rails.com.cn
- Python 3.9
- Flask (Web服务)
- Playwright (列车信息查询)
- imap-tools (邮件监控)
- Beautiful Soup (HTML解析)
- Docker (容器化部署)
MIT License