这个小项目最吸引我的地方,不是“发邮件”本身,而是把一些零散的信息重新整理成一天开始时愿意打开的一封信。
它的核心结构其实很朴素:用 Python 做数据获取和流程编排,用 aiohttp 抓天气、新闻等内容,用 Jinja2 生成 HTML 邮件,再通过 SMTP 发出去,最后交给 GitHub Actions 定时执行。
我喜欢这种组合的原因,是每一层都足够简单。获取数据、整理内容、渲染模板、定时触发、发送邮件,各自职责很清楚,后面要替换数据源或者调整排版,都不用把整套流程推倒重来。
GitHub Actions 在这里最大的价值,不是“免费跑脚本”,而是把“定时执行”这件事变成一种稳定的基础能力。只要 workflow 还在,邮件就会按节奏送达,项目本身也不需要额外常驻服务。
HTML 邮件这件事看起来老派,但其实很适合做“信息打包”。天气、新闻、诗词、历史、问候这些内容单独看都很碎,放进同一封模板化邮件里,反而有了每天固定打开一次的理由。
如果以后继续迭代,我会更在意两件事:一是内容去重和节奏感,别让邮件变成机械堆砌;二是模板的可读性,让它既像自动化工具生成的结果,又保留一点像真正问候的温度。