我正在尝试从所有文件夹中获取信息,但似乎代码给了我以下错误:
命令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()
基本上我正在尝试从我的电子邮件帐户中创建的所有文件夹中获取“发件人”。
答案 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
因为它会删除标记为删除的邮件,并在进入下一个循环迭代时再次呼叫CLOSE
或EXAMINE
,然后...