为 python smtplib 获取 "Network is unreachable"
Getting "Network is unreachable" for python smtplib
我已经尝试为 django 应用程序设置电子邮件确认,在几个失败步骤之后,我尝试使用简单的 python 模块使用 smtplib(通过 Corey 的 tutorial)但是在教程的第一部分,当他收到电子邮件时我在等待大约 30 秒后收到此错误:
Traceback (most recent call last):
File "main.py", line 10, in <module>
with smtplib.SMTP('smtp.gmail.com', port) as smtp:
File "/usr/lib/python3.8/smtplib.py", line 253, in __init__
(code, msg) = self.connect(host, port)
File "/usr/lib/python3.8/smtplib.py", line 339, in connect
self.sock = self._get_socket(host, port, self.timeout)
File "/usr/lib/python3.8/smtplib.py", line 308, in _get_socket
return socket.create_connection((host, port), timeout,
File "/usr/lib/python3.8/socket.py", line 808, in create_connection
raise err
File "/usr/lib/python3.8/socket.py", line 796, in create_connection
sock.connect(sa)
OSError: [Errno 101] Network is unreachable
这是代码
with smtplib.SMTP('smtp.gmail.com', 587) as smtp:
smtp.ehlo()
smtp.starttls()
smtp.ehlo()
smtp.login(username, password)
subject = 'Test'
body = 'Testing smtp library'
msg = f'Subject: {subject}\n\n{body}'
smtp.sendmail(username, username, msg)
我正在使用 2 因素身份验证和应用程序密码,我已经检查了 16 位密码,但是我不知道其他方法来检查我是否能够使用这些凭据登录。
问题是我使用的是 VPN(我不知道为什么,因为我是从 VPN 的位置登录的),但是我遇到了另一个问题,之后无法登录并遇到另一个错误
Traceback (most recent call last):
File "main.py", line 12, in <module>
smtp.login(username, username)
File "/usr/lib/python3.8/smtplib.py", line 734, in login
raise last_exception
File "/usr/lib/python3.8/smtplib.py", line 723, in login
(code, resp) = self.auth(
File "/usr/lib/python3.8/smtplib.py", line 646, in auth
raise SMTPAuthenticationError(code, resp)
smtplib.SMTPAuthenticationError: (535, b'5.7.8 Username and Password not accepted. Learn more at\n5.7.8 https://support.google.com/mail/?p=BadCredentials k18sm34466285edx.18 - gsmtp')
所以我只是尝试了另一种选择。我使用 yagmail,使用与我使用的相同的凭据就可以了。所以我猜问题是 gmail 不接受 smtplib。
我已经尝试为 django 应用程序设置电子邮件确认,在几个失败步骤之后,我尝试使用简单的 python 模块使用 smtplib(通过 Corey 的 tutorial)但是在教程的第一部分,当他收到电子邮件时我在等待大约 30 秒后收到此错误:
Traceback (most recent call last):
File "main.py", line 10, in <module>
with smtplib.SMTP('smtp.gmail.com', port) as smtp:
File "/usr/lib/python3.8/smtplib.py", line 253, in __init__
(code, msg) = self.connect(host, port)
File "/usr/lib/python3.8/smtplib.py", line 339, in connect
self.sock = self._get_socket(host, port, self.timeout)
File "/usr/lib/python3.8/smtplib.py", line 308, in _get_socket
return socket.create_connection((host, port), timeout,
File "/usr/lib/python3.8/socket.py", line 808, in create_connection
raise err
File "/usr/lib/python3.8/socket.py", line 796, in create_connection
sock.connect(sa)
OSError: [Errno 101] Network is unreachable
这是代码
with smtplib.SMTP('smtp.gmail.com', 587) as smtp:
smtp.ehlo()
smtp.starttls()
smtp.ehlo()
smtp.login(username, password)
subject = 'Test'
body = 'Testing smtp library'
msg = f'Subject: {subject}\n\n{body}'
smtp.sendmail(username, username, msg)
我正在使用 2 因素身份验证和应用程序密码,我已经检查了 16 位密码,但是我不知道其他方法来检查我是否能够使用这些凭据登录。
问题是我使用的是 VPN(我不知道为什么,因为我是从 VPN 的位置登录的),但是我遇到了另一个问题,之后无法登录并遇到另一个错误
Traceback (most recent call last):
File "main.py", line 12, in <module>
smtp.login(username, username)
File "/usr/lib/python3.8/smtplib.py", line 734, in login
raise last_exception
File "/usr/lib/python3.8/smtplib.py", line 723, in login
(code, resp) = self.auth(
File "/usr/lib/python3.8/smtplib.py", line 646, in auth
raise SMTPAuthenticationError(code, resp)
smtplib.SMTPAuthenticationError: (535, b'5.7.8 Username and Password not accepted. Learn more at\n5.7.8 https://support.google.com/mail/?p=BadCredentials k18sm34466285edx.18 - gsmtp')
所以我只是尝试了另一种选择。我使用 yagmail,使用与我使用的相同的凭据就可以了。所以我猜问题是 gmail 不接受 smtplib。