如何解决Python SMTP 库无法处理 IPv6
请问如何在 SMTP 库中添加 IPv6 选项?
当我尝试使用 IPv6 连接到 SMTP 时,出现此错误:
smtpserver = smtplib.SMTP("smtp.gmail.com",587,source_address=('2a00:xxxx:5::1e7',80,0))
错误:TypeError: AF_INET address must be a pair (host,port)
这意味着 smtplib.py 不支持 IPv6
我发现了一篇关于“https://bugs.python.org/issue3461”的文章。我试图将补丁添加到我的 smtplib.py 中,但没有用
谁能帮我做这件事?
解决方法
... source_address=('2a00:xxxx:5::1e7',80,...
错误信息具有误导性。在 Linux 上执行 strace
表明它实际上尝试绑定到给定的 IP 和端口但失败了 - 然后发出此误导性错误消息。失败的原因可能有多种,但典型的情况可能是没有权限对端口进行竞标(此处绑定到端口 80 需要 root 权限)或者该端口已被另一个套接字使用(端口 80 是通常用于网络服务器)。
一般来说,最好只指定 IP 地址并将端口保留为 0。这样它将使用给定的 IP 地址作为源 IP,但选择一个随机(临时)端口作为源端口。
我找到了一篇关于“https://bugs.python.org/issue3461”的文章
这无关。它仅与 SMTP 对话期间 EHLO 命令中显示的发件人有关。如果这是一个问题,只需给出与 local_hostname
参数一起使用的值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。