imaplib save authenticate pythone

时间:2018-01-10 13:08:33

标签: python email gmail imaplib

抱歉我的英文。我使用imaplib进行电子邮件操作。我尝试保存身份验证,以保存我的密码。我找到了方法

IMAP4.login_cram_md5

但它是如何使用的?

这是我的例子

IMAP_SERVER = 'imap.gmail.com'
IMAP_PORT = '993'
IMAP_USE_SSL = True


    class MailBox(object):
        def __init__(self, user, password):
            print("MailBox __init__")
            self.user = user
            self.password = password
            if IMAP_USE_SSL:
                self.imap = imaplib.IMAP4_SSL(IMAP_SERVER, IMAP_PORT)
            else:
                self.imap = imaplib.IMAP4(IMAP_SERVER, IMAP_PORT)

        def __enter__(self):
            print("MailBox __enter__")
            self.imap.login_cram_md5(self.user, self.password)
            return self

开始代码

class Main:
    main_box = MailBox('asdasd@gmail.com', 'wqeqwdsadwqeq==')
    main_box.__enter__()

我有错误

imaplib.error: Unsupported AUTHENTICATE mechanism. i188mb2545835lji

1 个答案:

答案 0 :(得分:0)

您的服务器不支持CRAM_MD5。

在尝试使用扩展程序之前检查服务器的CAPABILITY:

> a CAPABILITY   
< * CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 XYZZY SASL-IR AUTH=XOAUTH2 AUTH=PLAIN AUTH=PLAIN-CLIENTTOKEN AUTH=OAUTHBEARER AUTH=XOAUTH
< a OK Thats all she wrote!

Gmail支持验证方法XOAUTH2,PLAIN,PLAIN-CLIENTTOKEN,OAUTHBEARER和XOAUTH(以及基线非验证登录)。

PLAIN是标准配置。我不确定PLAIN-CLIENTTOKEN是什么。其余的是OAUTH的变种。