Python通过smtplib模块调用Gmail SMTP发送邮件实战

Luna
Luna
发布时间:2026-10-12 | 3人浏览过
原创

介绍如何使用Python的smtplib模块结合Gmail的SMTP服务发送电子邮件。包含获取应用专用密码的步骤、完整可运行代码示例及端口配置说明,适用于Python 3环境下的邮件自动化场景。

获取Gmail应用专用密码

Gmail已全面禁止通过默认账号密码直接登录SMTP服务器。发送前需在Google账户设置中开启两步验证,并在“安全性”页面创建应用专用密码。该密码由16位字母数字组成,专门用于第三方客户端或代码授权,可有效隔离主账号风险。

编写发送脚本与运行步骤

Python 3内置标准库即可满足需求。将以下代码保存为脚本后执行,替换其中的占位参数即可触发发送:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

# 1. 配置发件人、收件人与授权信息
sender = 'your_email@gmail.com'
receiver = 'recipient@example.com'
app_password = '你的16位应用专用密码'

# 2. 构建邮件内容
msg = MIMEMultipart()
msg['From'] = sender
msg['To'] = receiver
msg['Subject'] = '测试主题'
msg.attach(MIMEText('这是一封通过Python自动发送的测试邮件。', 'plain', 'utf-8'))

try:
    # 3. 建立安全连接并发送
    with smtplib.SMTP('smtp.gmail.com', 587) as server:
        server.ehlo()
        server.starttls()
        server.ehlo()
        server.login(sender, app_password)
        server.send_message(msg)
    print("✅ 邮件发送成功")
except Exception as e:
    print(f"❌ 发送失败: {e}")

关键参数与运行机制

• 587 端口配合 starttls() 是官方推荐的明文传输后升级加密的标准流程;若需全程SSL加密,需将初始化改为 smtplib.SMTP_SSL('smtp.gmail.com', 465) 并移除starttls调用。
• send_message() 替代了旧版 sendmail(),能更精准地解析邮件头部信息与中文编码。
• 使用 with 上下文管理器可确保网络连接在代码块结束时自动释放,防止资源泄漏。

完成判断与常见排错

控制台输出 ✅ 邮件发送成功 即表示任务完成。实际投递可能存在数分钟延迟,收到方垃圾邮件文件夹可作为初步验证点。若遭遇 Authentication failed,请检查应用密码是否含多余空格或输入错误;若提示 Connection timed out,则通常为本地网络防火墙拦截了出站邮件端口。生产环境建议添加重试逻辑或接入企业邮箱API以提升稳定性。

以上就是Python利用smtplib模块通过Gmail发送邮件的详细内容,更多关于Python网络通信与自动化办公的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表