Использование python imaplib для «удаления» электронной почты из Gmail?

== выполняет контрольную проверку равенства, ссылаясь на то, что 2 объекта (строки в этом случае) относятся к одному и тому же объекту в памяти.

Метод equals() будет проверять, будет ли содержимое или состояния двух объектов одинаковы.

Очевидно, что == работает быстрее, но во многих случаях может (может) давать ложные результаты, если вы просто хотите сказать, имеет ли 2 String s тот же текст.

Определенно рекомендуется использовать метод equals().

Не беспокойтесь о производительности. Некоторые способы поощрения использования String.equals():

  1. Реализация String.equals() сначала проверяет ссылочное равенство (используя ==), и если две строки одинаковы по ссылке, дальнейший расчет Выполняется!
  2. Если 2 ссылки на строки не совпадают, String.equals() будет проверять длину строк. Это также является быстрой операцией, поскольку класс String хранит длину строки, не нужно считать символы или кодовые точки. Если длины отличаются, дальнейшая проверка не выполняется, мы знаем, что они не могут быть равными.
  3. Только если мы доберемся до этого, будет фактически сопоставлено содержимое двух строк, и это будет короткий сравнение: не все символы будут сравниваться, если мы найдем несоответствующий символ (в том же положении в 2 строках), никакие другие символы не будут проверены.

Когда все сказано и даже если у нас есть гарантия, что строки являются стажерами, использование метода equals() все еще не является издержками, которые можно было бы подумать, определенно рекомендуемым способом. Если вам нужна эффективная проверка ссылок, используйте перечисления, где гарантируется спецификацией и реализацией языка, что одно и то же значение перечисления будет одним и тем же объектом (по ссылке).

13
задан Demon Labs 22 November 2009 в 00:13
поделиться

3 ответа

Используйте метод store (объекта IMAP4 , представляющего ваше соединение), чтобы установить флаг r '\ Deleted' на номере сообщения, которое вы хотите удалить, как показано в примере в документации; затем метод expunge для фактического выполнения всех удалений, отмеченных таким образом.

Реализация IMAP в Gmail по умолчанию имеет несколько иную семантику, но если вы хотите, вы можете настроить так, чтобы он вел себя в значительной степени больше похоже на традиционную реализацию IMAP (где работает указанная выше последовательность) - в основном вам нужно включить лабораторию «Расширенные элементы управления IMAP», а затем следовать инструкциям по URL-адресу, который я дал, чтобы получить именно ту семантику IMAP, которую вы хотите (физическое удаление, а не архивирование "удаленных" писем, ожидающих или не ожидающих удаления ,

21
ответ дан 1 December 2019 в 17:51
поделиться

Удаление электронной почты по IMAP выполняется в два этапа:

  • отметьте один или несколько элементы для удаления: imap.store (msg_no, '+ FLAGS', '\\ Deleted')
  • очистить почтовый ящик: imap.expunge ()

( imap это ваш объект IMAP4 )

17
ответ дан 1 December 2019 в 17:51
поделиться
imap.uid('STORE', list_of_msgno , '+FLAGS', '(\Deleted)')  
imap.expunge() 

т.е.

imap.uid('STORE', '2, 4, 9, 12' , '+FLAGS', '(\Deleted)') 

Здесь (2, 4, 9, 12) - это uid сообщений, которые будут удалены.

8
ответ дан 1 December 2019 в 17:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: