每日发送邮件简报项目:数据通过爬虫/接口获取,支持邮箱订阅、SMTP 配置、天气地点设置,邮件模板为新粗野主义风格海报。
- 邮箱订阅:公开页输入邮箱点击订阅,订阅后每天会收到一封简报邮件。
- 订阅管理:查看订阅列表、删除订阅。
- SMTP 配置:配置发件邮箱和 SMTP 服务器,可向指定邮箱发送测试邮件。
- 天气地点:设置取天气的经纬度地点(默认用于邮件中的天气数据)。
- 后端:Python Django 5 + Django REST framework
- 数据库:SQLite
- 前端:管理后台为单页 HTML + Tailwind(shadcn-admin 风格)
- 头部:日期、星期几、天气(地点、温度、天气状况)
- 加密货币:BTC、ETH、SOL、USDT/CNY
- 股指:纳斯达克、标普500、道琼斯;上证、深证、创业板;恒生、恒生科技;日经、英国富时;美元离岸人民币;黄金、白银
- 新闻与热点:百度热点、币圈新闻(律动 BlockBeats)、微博热搜等,表格展示标题、简介、时间,可点击查看详情
- 底部:版权信息(小芳)
- 天气:Open-Meteo API(经纬度 + 天气代码/图标)
- 币价:CoinGecko(BTC/ETH/SOL、USDT/CNY)
- 股票/指数:Yahoo Finance 风格接口
- 百度热点:
top.baidu.comAPI - 币圈快讯:律动 BlockBeats API、Foresight News 页面解析
- 微博热搜:微博热搜接口(可选)
cd email_subscription_site
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
python manage.py migrate
python manage.py runserver
pip install playwright
playwright install chromium
playwright install-deps- 公开订阅页:http://127.0.0.1:8000/
- 管理后台:http://127.0.0.1:8000/api/admin-page/
- Django 自带 Admin:http://127.0.0.1:8000/admin/(需先
python manage.py createsuperuser)
- 方式一(推荐):cron 定时执行(早上 8 点 / 中午 12 点 / 晚上 11 点)
0 8 * * * cd /path/to/email_subscription_site && .venv/bin/python manage.py send_daily``0 12 * * * cd /path/to/email_subscription_site && .venv/bin/python manage.py send_daily``0 23 * * * cd /path/to/email_subscription_site && .venv/bin/python manage.py send_daily - 方式二:HTTP 触发
POST /api/send-daily/(可被外部定时任务调用)
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/subscribe/ | 订阅邮箱(body:{ "email": "[email protected]" }) |
| GET | /api/subscription-list/ | 订阅列表 |
| DELETE | /api/subscription/<id>/delete/ |
删除订阅 |
| GET/POST | /api/smtp/ | SMTP 配置列表/创建 |
| POST | /api/smtp/<id>/test_send/ |
测试发送(body:{ "to_email": "xxx" }) |
| GET/POST | /api/weather-location/ | 天气地点列表/创建 |
| POST | /api/send-daily/ | 触发每日发送 |
DJANGO_SECRET_KEY:生产环境务必设置DEBUG=0:关闭调试CELERY_BROKER_URL:若使用 Celery 定时任务
邮箱订阅管理网站已创建在 /Users/all/email_subscription_site,包含以下内容。
- 功能概览 邮箱订阅:首页输入邮箱点击订阅,订阅后每天会收到一封简报邮件。 订阅管理:查看订阅列表、删除订阅(管理页 + API)。 SMTP 配置:配置发件邮箱和 SMTP,可向指定邮箱发送测试邮件。 天气地点:设置取天气的经纬度(用于邮件中的天气数据)。
- 邮件模板(新粗野主义海报) 头部:日期、星期几、天气(地点、温度、天气状况)。 加密货币:BTC、ETH、SOL、USDT/CNY。 股指:纳斯达克、标普500、道琼斯;上证、深证、创业板;恒生、恒生科技;日经、英国富时;美元离岸人民币;黄金、白银。 新闻与热点:百度热点、币圈新闻(律动 BlockBeats)、微博热搜等,表格展示标题、简介、时间。 底部:版权信息(小芳)。
- 数据抓取 天气:Open-Meteo API(经纬度 + 天气代码/描述)。 币价:CoinGecko(BTC/ETH/SOL、USDT/CNY)。 股票/指数:Yahoo Finance 风格接口。 百度热点:你提供的 top.baidu.com API。 币圈:律动 BlockBeats API;Foresight News 用 BeautifulSoup 解析页面。 微博热搜:微博热搜接口(已接好,可扩展小红书/抖音)。
- 项目结构(简要) email_subscription_site/ ├── config/ # Django 配置 ├── core/ │ ├── models.py # 订阅、SMTP、天气地点 │ ├── views.py # 订阅 API、管理 API、每日发送 │ ├── fetchers/ # 天气、币价、股票、新闻、热搜 │ ├── email_context.py # 组装邮件上下文 │ └── management/commands/send_daily.py # 每日发送命令 ├── templates/core/ │ ├── email_poster.html # 邮件海报模板 │ ├── admin.html # 管理后台单页 │ └── landing.html # 公开订阅页 ├── requirements.txt ├── manage.py └── README.md
- 本地运行 cd /Users/all/email_subscription_sitepython3 -m venv .venvsource .venv/bin/activatepip install -r requirements.txtpython manage.py migratepython manage.py runserver 公开订阅页:http://127.0.0.1:8000/ 管理后台:http://127.0.0.1:8000/api/admin-page/ Django Admin:http://127.0.0.1:8000/admin/(需先 createsuperuser)
- 每日定时发送 cron:0 8 * * * cd /path/to/email_subscription_site && .venv/bin/python manage.py send_daily 或:定时请求 POST /api/send-daily/ 更多说明见项目里的 README.md。若你希望再扩展(例如小红书/抖音热搜、国外新闻、二维码图片等),可以说明具体需求,我按你的环境继续改。
