Python 自动化通信:发送邮件与短信
前两篇我们借助 Daoman Python AI 实现了 Excel、Word、PDF 的一键生成——但文件躺在服务器上没人收,等于白干。今天就来打通业务自动化的最后一公里:用 Python 发送邮件和短信,把「文档产出 → 消息触达」这条链路彻底焊死。
1. 发送电子邮件:用 SMTP 直接对话邮件服务器
发邮件不一定要打开浏览器,本质上就是让程序模拟邮件客户端,通过 SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)与网易 / QQ / 企业邮箱服务器握手、加密、投递。Python 内置的 smtplib 已经帮我们封装好了这些底层细节。
1.1 前置安全准备:拿到专属「授权码」
直接用登录密码在第三方程序中登录邮箱风险太高,现在主流邮箱(126、163、QQ、Gmail 等)都要求使用授权码:
- 登录邮箱网页版
- 进入「设置 → 账户 → POP3/IMAP/SMTP/Exchange」
- 开启 POP3/SMTP 服务
- 按提示绑定手机、验证短信,拿到一串 16 位左右的授权码(只显示一次,务必保存好)
💡 企业邮箱的授权码获取方式大同小异,联系 IT 或查内部文档即可。
1.2 第一封:纯文本邮件快速上手
邮件内容由 email.mime 系列模块拼装而成。纯文本邮件直接用 MIMEText;如果后续要加附件、HTML 正文或图片,就需要用「容器」MIMEMultipart。
1.3 升级版:带附件 + HTML 排版的邮件
纯文本有点干巴巴的,我们可以加入 HTML 提升视觉效果(表格、加粗、公司 logo 占位等),同时把 AI 生成好的 Excel / PDF / Word 作为附件一起发送。
附件的核心逻辑
附件本质上是二进制文件,而 SMTP 只能传文本,因此需要用 Base64 将二进制编码成字符流。同时,中文文件名可能出现乱码,需要用 email.header 配套方法处理。
2. 发送短信:找第三方网关当「中间商」
与邮件有统一的 SMTP 协议不同,短信并没有通用的编程接口——我们总不能自己建个基站。因此需要借助合规的第三方短信服务商(如阿里云、腾讯云、螺丝帽等),通过它们提供的 HTTP API 来下发短信。
2.1 短信发送的标准合规流程
国家对短信业务管控非常严格,没有签名 / 未经许可发送营销短信属于违规行为。正规流程必须走完以下几步:
- 注册服务商账号——推荐阿里云、腾讯云等大厂,合规性好、技术支持到位
- 实名认证——企业或个人均需提交资料
- 申请短信签名——例如
【道满科技】,会出现在短信的开头或结尾,服务商审核标准明确 - 申请短信模板——例如
您的验证码是${code},请于5分钟内输入。请勿泄露给他人!,变量使用服务商指定的占位符 - 获取 API Key / Secret——相当于调用接口的凭证
2.2 实战代码(以阿里云短信服务为例)
大厂的 API 通常提供官方 SDK,但这里用通用 requests 库演示,方便你迁移到其他服务商。
3. 避坑指南与安全建议
-
🔐 安全第一
授权码、API Key / Secret 绝对不要硬编码在代码里(尤其别上传到公开仓库)。推荐使用python-dotenv读取环境变量,或借助云服务商的密钥管理服务(KMS)。 -
📧 邮件防垃圾信小技巧
- 避免批量发送完全相同的邮件,可以加入个性化内容(如开头称呼)
- 尽量使用企业邮箱发送,免费邮箱更容易被标记为垃圾邮件
- 附件控制在 10 MB 以内,大文件建议用云盘链接替代
-
📱 短信合规红线
- 个人实名只能发送验证码、通知类短信,不得发送营销短信
- 营销短信必须携带「退订回 T」字样
- 务必配置 IP 白名单和调用频率限制,防止接口被盗刷
掌握了邮件与短信的自动化发送,再结合前两篇的文档自动生成,你已经可以用 Daoman Python AI 打造一套完整的「周报 / 月报自动生成 + 自动通知」系统了。快去动手试试吧~

