Python IMAP选择多个文件夹

时间:2016-05-05 01:01:25

标签: python imap

我正在尝试从所有文件夹中获取信息,但似乎代码给了我以下错误:

命令SEARCH在状态AUTH中非法,只允许在SELECTED状态下

我用谷歌搜索了它,但对我来说没有结果。

这是代码:

        M = imaplib.IMAP4_SSL('',993)
        M.login(user,password)
        folders = M.list()

        for folder in folders[1]:

            for allfolders in re.findall('"\/"(.*)',folder):

                finalfolders = allfolders.replace(" ",'')

                M.select(finalfolders, readonly=True)

                print finalfolders

                typ, data = M.search(None, 'ALL')

                for num in data[0].split():
                    typ, data = M.fetch(num, '(RFC822)')
                    email_message = email.message_from_string(data[0][1])
                    su = email_message['From']

                    allz = re.findall("<(.*)>",su)

                    for x in allz:

                        print x

                    results.write(x+'\n')
                    results.flush()
                    #print su
                M.close()
                M.logout()

基本上我正在尝试从我的电子邮件帐户中创建的所有文件夹中获取“发件人”。

1 个答案:

答案 0 :(得分:0)

您只能在任何给定时间使用一个IMAP连接选择一个文件夹。这意味着您的代码首先应class User < ActiveRecord::Base # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :omniauthable, :omniauth_providers => [:facebook] def self.from_omniauth(auth) where(provider: auth.provider, uid: auth.uid).first_or_create do |user| user.provider = Devise.friendly_token[0,20] user.email = auth.info.email user.password = Devise.friendly_token[0,20] user.fname = auth.info.first_name user.lname = auth.info.last_name end end end EXAMINE邮箱,然后SELECT,无论您需要下载什么,然后调用FETCH因为它会删除标记为删除的邮件,并在进入下一个循环迭代时再次呼叫CLOSEEXAMINE,然后...