我发布此消息是因为我使用相同的错误代码解决了问题。它可能会帮助遇到类似问题的其他人。
我曾经运行 py 脚本来发送电子邮件。另一方面,邮件服务器证书被更新,突然我的脚本无法连接到服务器。
bash # python3 email_send.py
Traceback (most recent call last):
File "emailsend.py", line 143, in <module>
server.starttls(context=context)
File "/usr/lib/python3.8/smtplib.py", line 774, in starttls
self.sock = context.wrap_socket(self.sock,
File "/usr/lib/python3.8/ssl.py", line 500, in wrap_socket
return self.sslsocket_class._create(
File "/usr/lib/python3.8/ssl.py", line 1040, in _create
self.do_handshake()
File "/usr/lib/python3.8/ssl.py", line 1309, in do_handshake
self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1108)
我通过添加最后两行解决了这个问题。
context = ssl.create_default_context()
context.check_hostname = False
context.verify_mode = ssl.CERT_NONE