Skip to content

Latest commit

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Mail2Tweet

定时收取特定邮箱邮件,将其内容通过 X API 发布为推文,并回执处理结果。

工作流程

[NEWS] 邮件 → 解析 → 校验 → 上传媒体 → 发单条推文 → 回执
[ARTICLE] 邮件 → 解析 → 校验 → 上传媒体
├─ ≤280 字 → 发单条推文 → 回执
└─ >280 字 → AI 改写 → 推文串 → 回执

推文串格式:首条为引子,中间以 ⬇️ 结尾,最后以 🔚 收尾。

部署

环境要求

  • Python 3.9+
  • Linux (AlmaLinux/CentOS/Ubuntu)

安装

git clone <repo-url>cd Mail2Tweet
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

配置

cp .env.example .env
chmod 600 .env
# 编辑 .env 填入凭据

OAuth 授权(首次部署)

Azure AD 设备码授权,用于 IMAP/SMTP XOAUTH2 登录:

./venv/bin/python setup_oauth.py
# 打开输出的 URL,输入代码,完成授权

Token 保存在 data/tokens.json,会自动刷新。

定时任务

crontab -e
# 每天两次:UTC 13:00(美东 9 AM)和 UTC 21:00(美东 5 PM)# X 流量峰值时段
0 13,21 *** /usr/bin/flock -n /tmp/mail2tweet.lock /path/to/venv/bin/python /path/to/main.py

邮件格式

上游 AI 系统发送的邮件必须为纯文本(text/plain),UTF-8 编码。

前缀行为超长处理
[NEWS]直接发单条推文CONTENT_TOO_LONG
[ARTICLE]≤280 直接发;>280 AI 拆分推文串AI 自动拆分

附件可选:最多 4 张图片(JPEG/PNG/GIF/WEBP)或 1 个视频(MP4/MOV)。

详见 邮件格式规范

错误码

代码含义
SUCCESS推文已发布
CONTENT_TOO_LONG正文超长([NEWS])
MEDIA_UNSUPPORTED附件格式不支持
MEDIA_COUNT_EXCEEDED附件数量超限
MEDIA_UPLOAD_FAILED媒体上传失败
TWEET_FAILED发推失败
THREAD_FAILED推文串发布失败
AI_FAILEDAI 服务不可用
AI_OUTPUT_INVALIDAI 返回格式异常
DAILY_LIMIT_REACHED当日配额用尽
PARSE_ERROR邮件格式无法解析
OTHER_ERROR其他错误

测试

./venv/bin/python -m unittest discover tests -v

About

利用 Agent 写的小程序或者小工具

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages