最小 Python IMAP over SSL 示例

注意: 考虑使用 IMAP with TLS 而不是 IMAP over SSL。请参见最小 Python IMAP over TLS 示例

此示例代码将使用端口 993(IMAP over SSL)登录服务器,列出邮箱并立即注销。

imap_ssl_example.py
#!/usr/bin/env python3
import imaplib

server = imaplib.IMAP4_SSL('imap.mydomain.com')
server.login('email@mydomain.com', 'password')
# 打印服务器上的邮箱列表
code, mailboxes = server.list()
for mailbox in mailboxes:
    print(mailbox.decode("utf-8"))
# 选择邮箱
server.select("INBOX")
# 清理
server.close()

记住替换:

运行此脚本时,成功输出可能如下所示:

imap_example_output.txt
(\HasChildren) "." INBOX
(\HasNoChildren) "." INBOX.Spam
(\HasNoChildren) "." INBOX.Drafts
(\HasNoChildren) "." INBOX.Sent
(\HasNoChildren) "." INBOX.Trash

如果你的凭据不起作用,你将看到类似这样的错误消息:

imap_example_traceback.txt
Traceback (most recent call last):
  File "./imaptest.py", line 5, in <module>
    server.login('email@domain.com', 'mypassword')
  File "/usr/lib/python3.6/imaplib.py", line 598, in login
    raise self.error(dat[-1])
imaplib.error: b'[AUTHENTICATIONFAILED] Authentication failed.'

注意为了能够 server.close() 连接,需要先 server.select() 一个邮箱;这就是为什么我们不能省略 server.select("INBOX") 行,即使我们实际上没有对邮箱做任何事情。请参见此文章了解此行为的更简洁示例。


Check out similar posts by category: Python