2016-08-04 4 views
1

В принципе, как указано в названии, я используюне IMAP позволяет использовать GMAIL папки - mail.select папки, кроме «Входящие»

mail.select("inbox") 
result, data = mail.search(None, "ALL") 
ids = data[0] # data is a list. 
id_list = ids.split() # ids is a space separated string 
latest_email_id = id_list[-1] # get the latest 

Чтобы получить самую последнюю электронную почту от почтового ящика. Теоретически вы можете изменить «inbox» на другую метку или папку в gmail (мои ярлыки и папки появились с помощью mail.list() просто отлично). Я хочу использовать ярлык «Состояние сервера/Левиафан», но он бросает ошибку

Traceback (most recent call last): 
    File "E:\False Apparition\Desktop\test3.py", line 18, in <module> 
    mail.select("Server Status/Leviathan") 
    File "C:\Users\Ancient Abysswalker\AppData\Local\Programs\Python\Python36-32\lib\imaplib.py", line 737, in select 
    typ, dat = self._simple_command(name, mailbox) 
    File "C:\Users\Ancient Abysswalker\AppData\Local\Programs\Python\Python36-32\lib\imaplib.py", line 1188, in _simple_command 
    return self._command_complete(name, self._command(name, *args)) 
    File "C:\Users\Ancient Abysswalker\AppData\Local\Programs\Python\Python36-32\lib\imaplib.py", line 1019, in _command_complete 
    raise self.error('%s command error: %s %s' % (name, typ, data)) 
imaplib.error: SELECT command error: BAD [b'Could not parse command'] 

, которая отличается, если метка не существует на Gmail ...

Traceback (most recent call last): 
    File "E:\False Apparition\Desktop\test3.py", line 20, in <module> 
    result, data = mail.search(None, "ALL") 
    File "C:\Users\Ancient Abysswalker\AppData\Local\Programs\Python\Python36-32\lib\imaplib.py", line 715, in search 
    typ, dat = self._simple_command(name, *criteria) 
    File "C:\Users\Ancient Abysswalker\AppData\Local\Programs\Python\Python36-32\lib\imaplib.py", line 1188, in _simple_command 
    return self._command_complete(name, self._command(name, *args)) 
    File "C:\Users\Ancient Abysswalker\AppData\Local\Programs\Python\Python36-32\lib\imaplib.py", line 936, in _command 
    ', '.join(Commands[name]))) 
imaplib.error: command SEARCH illegal in state AUTH, only allowed in states SELECTED 

я упускаю что нибудь? Возможно, библиотека?

+0

Можете ли вы использовать косые черты в статусах серверов? Разве это не противоречит разделителю иерархии? – arnt

+0

Кроме того, выполнение SEARCH ALL для получения одного UID равно O (неверно). – arnt

+0

Если ваше имя папки имеет кавычки или специальные символы, обязательно процитируйте их; imaplib не делает этого для вас. – Max

ответ

1

Добавить кавычки вокруг имени вашей папки. Imaplib должен сделать это за вас, но это не так: mail.select('"folder with space"')

+0

О, это имеет смысл. Я бы никогда не подумал, что это проблема. Спасибо :) –

+0

Если это поможет, пожалуйста, голосуйте и принимайте ответ. – Max