Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как удалить сообщение в imaplib? Python v3.3.2 
V
    Опции темы
tishaishii
Дата 6.8.2013, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



Пример из документации не помогает:
Код
imconn = imaplib.IMAP4("imap.yandex.ru")
imconn.login(username, password)
imconn.select(folder)
imconn.store(msgid, "+FLAGS", '(\\Deleted)') # так же пробовал писать '(\Deleted)'
imconn.expunge()


Выводит:
Код
imaplib.error: STORE command error: BAD [b'command syntax error. sc=28P5Do3vpmIO']

PM MAIL ICQ Skype   Вверх
kolink
Дата 13.8.2013, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 13.8.2013

Репутация: нет
Всего: нет



Тоже интересует данный вопрос, только письма удалять надо старше определенного времени. Не знаю как получить дату письма.
А удалять собираюсь так:
M.store(num, '+FLAGS', '\\Deleted')

Правда еще не успел проверить...
PM MAIL   Вверх
kolink
Дата 16.8.2013, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 13.8.2013

Репутация: нет
Всего: нет



Вобщем так работает:
Код

typ, data = M.search(None, 'ALL')
for num in data[0].split():
   M.store(num, '+FLAGS', '\\Deleted')
M.expunge()

PM MAIL   Вверх
tishaishii
Дата 27.8.2013, 07:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



Да. Видимо, не те идентификаторы использовал.
PM MAIL ICQ Skype   Вверх
tishaishii
Дата 27.8.2013, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



Который идентификатор из ответа следует использовать?
Код
[b'[APPENDUID 1372444889 1402] APPEND completed']


Идентификатор получаю так:
Код
status , data = self.connection.append( mailbox = self.account[ "path" ] , message = data , flags = None , date_time = None )

PM MAIL ICQ Skype   Вверх
tishaishii
Дата 27.9.2013, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



kolink, а если сообщения находятся в другой папке, то что писать вместо M.store(num, '+FLAGS', '\\Deleted')?
Код

M.select( "directory" )
M.store(num, '+FLAGS', '\\Deleted')

выводит ошибку.

Это сообщение отредактировал(а) tishaishii - 27.9.2013, 19:14
PM MAIL ICQ Skype   Вверх
tishaishii
Дата 27.9.2013, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



Код

            try :
                status , data = self.connection.append( mailbox = self.account[ "path" ] , message = data , flags = None , date_time = None )
                id1 = data[ 0 ].split( )[ 2 ][ : -1 ].decode( encoding = encoding )
                id2 = data[ 0 ].split( )[ 1 ].decode( encoding = encoding )
                try :
                    self.connection.store( id1 , '+FLAGS' , '(\\Deleted)' )
                except Exception as exception :
                    print( exception )
                try :
                    self.connection.store( id2 , '+FLAGS' , '(\\Deleted)' )
                except Exception as exception :
                    print( exception )
                try :
                    self.connection.store( id1 , '+FLAGS' , '\\Deleted' )
                except Exception as exception :
                    print( exception )
                try :
                    self.connection.store( id2 , '+FLAGS' , '\\Deleted' )
                except Exception as exception :
                    print( exception )
                self.connection.expunge( )
                break
            except Exception as exception :
                print( exception )
                self.restart( )


И любой из перечисленных вызовов "store" запускает ивключение и возвращает ошибку:
Код
STORE command error: BAD [b'[CLIENTBUG] STORE invalid messages. sc=RUta1L0HbOsx']

PM MAIL ICQ Skype   Вверх
tishaishii
Дата 30.9.2013, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



Методом тыка и чтения документации http://opds.sut.ru/old/electronic_manuals/..._IMAP.htm#5_5_4 подобрал комбинацию, которая работает:
Код
self.connection.uid( 'STORE' , id , '+FLAGS' , '\\deleted' )


Добавлено через 6 минут и 45 секунд
И, прочитав документацию, посетила идея создать простой аналог imaplib.
Думал, библиотеки нужны, чтобы ими можно было пользоваться и не думать.smile
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1044 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.