python 的 smtplib 不工作

smtplib of python not working

正在尝试连接到 gmail 的 smpt 服务器,但网络无法访问

import smtplib
s=smtplib.SMTP('smtp.gmail.com',587)

这都不行

import smtplib
s=smtplib.SMTP_SSL('smtp.gmail.com',587)

出现以下错误:

回溯(最近调用最后):

  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/smtplib.py", line 251, in __init__
(code, msg) = self.connect(host, port)
  File "/usr/lib/python2.7/smtplib.py", line 311, in connect
self.sock = self._get_socket(host, port, self.timeout)
  File "/usr/lib/python2.7/smtplib.py", line 286, in _get_socket
return socket.create_connection((host, port), timeout)
  File "/usr/lib/python2.7/socket.py", line 571, in create_connection
raise err
  socket.error: [Errno 101] Network is unreachable

根据 this page 端口 587 需要 TLS。

使用端口 465。来自 Google SMTP 配置文档;

import smtplib
s = smtplib.SMTP_SSL('smtp.gmail.com', 465)

对我来说,当我在 Ubuntu 中尝试时,它正在使用 TLS 端口。脚本显示在这里:

import smtplib
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()

它正在 windows cygwin 中使用 SSL 端口。脚本显示在这里:

import smtplib
server = smtplib.SMTP_SSL('smtp.gmail.com', 465)

对我来说,是因为网络不允许打开套接字,如果可能的话尝试不同的网络