python-3.x - Python3 SMTP SSL 证书更新 - SSL:CERTIFICATE_VERIFY_FAILED 无法获取本地颁发者证书(_ssl.c:1108)
问题描述
我发布此消息是因为我使用相同的错误代码解决了问题。它可能会帮助遇到类似问题的其他人。
我曾经运行 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
解决方案
推荐阅读
- vba - 无法在 vba selenium 中设置 chrome 首选项
- python-3.x - 使用 PySimpleGui 加载多个文件夹
- javascript - 尝试访问 json 字段
- bdd - 如何避免不同用户的用户故事重复?
- delphi - 如何获得正确数量的逻辑处理器
- android - 可过滤的 Android PagedListAdapter
- websocket - 网络套接字。哪个是空闲超时的正确关闭代码?
- ruby-on-rails - 获取从现在到一天结束的 tsrange
- html - 提示对象不支持他的属性或方法
- linkedin - 获取 r_fullprofile 对 Linkedin API 的访问权限