QQ 邮箱附件发送(SMTP 直发,免 base64 转录)
痛点
QQ 邮箱 MCP 的 SendMessage 附件必须把文件 base64 成上万字符写进工具参数,模型手工转录 O/0/I/l/1 极易抄串,服务器直接拒收(content 校验失败)。
解法
用 Python 直接走 QQ 邮箱 SMTP(smtplib + ssl),附件的 base64 由脚本在代码内 email.encoders.encode_base64 完成,模型只传文件路径,不参与长字符串转录,100% 可靠。
文件
- 脚本:
~/.workbuddy/send_qqmail.py(已存在,自包含) - 配置:
~/.workbuddy/qqmail_config.json→{"email":"75536278@qq.com","auth_code":"你的SMTP授权码"}
一次性配置(用户侧)
- 登录 QQ 邮箱网页版 → 设置 → 账户 → 开启 POP3/SMTP 服务
- 生成 授权码(不是登录密码)
- 把授权码写入
~/.workbuddy/qqmail_config.json的auth_code字段
(或临时用环境变量QQMAIL_EMAIL/QQMAIL_AUTH_CODE)
用法
python ~/.workbuddy/send_qqmail.py \
--to 75536278@qq.com \
--subject "标题" \
--body "正文" \
--file "D:/path/to/file.html"
- 多个收件人:
--to "a@qq.com,b@qq.com" - 支持任意附件类型;中文文件名用 RFC2231 编码,不会乱码
运行环境
脚本是标准库(smtplib/ssl/email),任意 Python 3 均可:
C:/Users/xigua/.workbuddy/binaries/python/versions/3.13.12/python.exe
注意事项
- 收件人邮箱必须真实存在;用户真实 QQ 邮箱是
75536278@qq.com(非 75537289) - 授权码仅存本机配置文件,不要写入代码或提交
- 若用户未配置授权码,脚本会打印清晰指引并退出码 2