【问题标题】:Why separate authentication is required for imap and smtp?为什么 imap 和 smtp 需要单独的身份验证?
【发布时间】:2018-12-28 08:47:56
【问题描述】:

我正在使用 python 的 imaplib 和 smtplib 库 但是我必须分别登录到 imap 和 smtp 服务器,如下所示

imap:

self.imap = imaplib.IMAP4_SSL(self.imap_server,self.imap_port)
r, d = self.imap.login(self.username, self.password)

smtp:

self.smtp = smtplib.SMTP(self.smtp_server, self.smtp_port)
self.smtp.ehlo()
self.smtp.starttls()
self.smtp.login(self.username, self.password)

有什么方法可以同时登录吗?

【问题讨论】:

  • 它们是完全不同的服务,可能(理论上)具有不同的凭据。如果你真的想,你可以扩展内置的类,并提出你自己的登录方法,两者兼而有之。
  • 这两个服务甚至可以放在不同的主机上。

标签: python email smtp imap


【解决方案1】:

这里的根本原因是 IMAP 协议和 SMTP 协议都没有提供一种方式来表示“您可以在此处使用与(某些其他服务)相同的凭据”或类似的方式。这样的协议特性是可能的,也许作为SASL 特性,但它不是一个简单的扩展。

在青铜时代并没有这样做,因为 SMTP 只是在垃圾邮件发送者和移动设备出现时才开始使用密码。在那之前,IMAP 使用密码,但 SMTP 通常不使用。

所以我们留下了很多人假设两者是相同的,很多客户端只支持这种情况,但客户端库的工作方式就像 IMAP 和 SMTP 是不同的世界一样。

【讨论】:

    猜你喜欢
    • 2012-08-07
    • 1970-01-01
    • 2021-05-17
    • 1970-01-01
    • 2016-01-09
    • 2012-12-21
    • 2013-12-24
    • 2011-09-29
    • 2020-08-19
    相关资源
    最近更新 更多