You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python发自动化邮件遇[Errno97]地址族不支持协议错误的解决方法

解决Python发送邮件时的[Errno 97] Address family not supported by protocol错误

这个问题我之前排查过,核心原因是你SMTP服务器的连接参数传递方式错误,具体看这行代码:

server = smtplib.SMTP('smtp.gmail.com: 587')

错误原因

smtplib.SMTP()的正确参数格式是:第一个参数是主机名(字符串),第二个参数是端口号(整数),两者需要分开传递。你把主机和端口写在同一个字符串里,还加了多余的空格,导致SMTP客户端无法正确解析地址,进而触发了"Address family not supported by protocol"的错误。

修正步骤

  1. 修正SMTP连接代码,把主机和端口分开传递:
    server = smtplib.SMTP('smtp.gmail.com', 587)
    
  2. 额外注意(针对Gmail):
    • 如果你用的是普通账号密码,Gmail现在默认会阻止这种登录方式,建议你启用两步验证后创建应用专用密码,用这个密码代替原密码登录。
    • 确保你的账号没有开启过于严格的安全限制,否则即使代码正确也可能登录失败。

修正后的完整代码

# import necessary packages
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import smtplib

# create message object instance
msg = MIMEMultipart()
# 替换为你的应用专用密码
password = "your_app_specific_password"
msg['From'] = "risk@gmail.com"
msg['To'] = "game@gmail.com"
msg['Subject'] = "Photos"

# 修正后的SMTP连接参数
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
# Login Credentials for sending the mail
server.login(msg['From'], password)
server.sendmail(msg['From'], msg['To'], msg.as_string())
server.quit()  # 记得关闭连接释放资源

内容的提问来源于stack exchange,提问作者aeapen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:17:13