Python3 SMTP ValueError:server_hostname不能为空字符串或以前导点开头

Pat*_*k E 2 smtplib python-3.x

import smtplib
smtp = smtplib.SMTP()
smtp.connect('smtp.gmail.com','587')
(220, b'smtp.gmail.com ESMTP h15-v6sm187291iog.48 - gsmtp')
smtp.starttls()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/smtplib.py", line 771, in starttls
    server_hostname=self._host)
  File "/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/ssl.py", line 412, in wrap_socket
    session=session
  File "/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/ssl.py", line 843, in _create
    owner=self, session=self._session,
ValueError: server_hostname cannot be an empty string or start with a leading dot.
Run Code Online (Sandbox Code Playgroud)

我在Mac上使用python 3.7,无法与gmail执行tls握手。这段代码适用于python 2.7,以及使用python 3.5.2的Ubuntu服务器。有谁知道是什么原因导致此错误?

小智 7

似乎是python3.7 错误,请将主机名传递给smtplib.SMTP会解决此问题

smtp = smtplib.SMTP('smtp.gmail.com')
smtp.connect('smtp.gmail.com','587')
Run Code Online (Sandbox Code Playgroud)