您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使用Python smtplib发送不包含密钥文件(仅包含证书文件)的电子邮件

使用Python smtplib发送不包含密钥文件(仅包含证书文件)的电子邮件

有两种使用SSL / TLS的方法:客户端身份验证和“基本”,即客户端未经身份验证。在客户端身份验证的连接中,服务器和客户端都向对方发送证书。在“基本”中,只有服务器可以。

如果您既未通过证书也未通过密钥文件smtplib则将使用对客户端进行身份验证的基本连接。

如果您使用证书,它将用于客户端验证的连接。在这种情况下,服务器将通过签名握手消息来要求客户端显示其拥有证书。为了使客户端能够做到这一点,它还需要私钥,该私钥可以在证书文件中,也可以作为单独的密钥文件

长话短说,如果要使用客户端证书,则还必须使用密钥。如果没有,您可以将两者都留空。

OTOH,也许您有要用于连接的服务器证书文件或CA列表?

在这种情况下,你需要将它传递给ssl.wrap_socketca_certs参数。由于您使用Python 2.6有没有简单的方法来做到这一点与smtplib(Python的3.3+有一个context参数STARTTLS)。

如何解决这个问题取决于您的应用程序。例如,如果您不需要ssl其他任何东西,那么骇人听闻的解决方案就是用猴子补丁ssl.wrap_socket来提供您的ca_cert(以及cert_reqs=CERT_required可能的)补丁。

一个更完善的解决方案是smtplib.SMTP使用您自己的变体进行扩展,该变体允许传入这些参数。

python 2022/1/1 18:40:15 有271人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶