Python通过smtplib模块调用Gmail SMTP发送邮件实战
介绍如何使用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网络通信与自动化办公的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













