Python 使用 SMTP 网关发送 MMS 多媒体消息教程
1. 概述
MMS(Multimedia Messaging Service,多媒体消息服务)允许用户通过移动网络发送包含图像、视频或音频的文件,而不仅仅是纯文本。在开发自动化通知系统时,经常需要向用户的手机发送带有附件的消息。
由于直接调用运营商的短信 API 通常成本较高且配置复杂,一种常见且低成本的替代方案是利用电子邮件到短信网关(Email-to-SMS Gateway)。大多数移动运营商都支持将电子邮件地址转换为短信地址,格式通常为 手机号@运营商域名。通过 Python 的 smtplib 和 email 库,我们可以构建一个客户端,模拟发送邮件的行为,从而触发运营商将其转换为 MMS 发送给目标手机。
2. 准备工作
2.1 获取运营商网关地址
不同运营商有不同的邮件转短信域名。以下是常见运营商的网关地址参考:
| 运营商 | 短信网关 (SMS) | MMS 网关 (MMS) |
|---|---|---|
| Verizon | vtext.com | vtext.com |
| T-Mobile | tmomail.net | tmomail.net |
| AT&T | txt.att.net | mms.att.net |
| Sprint | messaging.sprintpcs.com | messaging.sprintpcs.com |
| US Cellular | email.uscc.net | email.uscc.net |
| Virgin Mobile | vmobl.com | vmobl.com |
注意:部分运营商(如 T-Mobile)可能不支持 MMS 网关,或者需要使用与 SMS 相同的域名。具体需根据实际测试调整。
2.2 配置 SMTP 服务
你需要一个支持 SMTP 协议的邮箱账号来发送请求。推荐使用 Gmail、Outlook 或企业邮箱。
- SMTP Server: 例如 Gmail 为
smtp.gmail.com - 端口: 465 (SSL) 或 587 (TLS)
- 认证: 建议使用应用专用密码(App Password),而非主密码,以增强安全性。
3. 技术实现原理
Python 标准库中的 email 模块提供了构建 MIME 消息的强大功能。MMS 本质上是一封包含多部分内容的邮件:
- Text Part: 纯文本消息内容。
- Attachment Part: 图片、PDF 或其他媒体文件。
我们需要使用 MIMEMultipart 来组合这些部分,并使用 MIMEBase 来处理二进制附件。


