Примеры, которые я видел по загрузке электронных писем через IMAP с помощью python, выполняют поиск, а затем для каждого идентификатора сообщения в результатах, делают запрос. Я хочу ускорить процесс, вытаскивая их всех сразу.Получение нескольких сообщений IMAP сразу
5
A
ответ
12
RFC 3501 говорит, что выборка принимает набор последовательностей, но я не видел определения для этого, и в этом примере используется форма диапазона (2: 4 = сообщения 2, 3 и 4). Я понял, что работает список идентификаторов, разделенных запятыми. В питоне с imaplib, у меня есть что-то вроде:
status, email_ids = con.search(None, query)
if status != 'OK':
raise Exception("Error running imap search for spinvox messages: "
"%s" % status)
fetch_ids = ','.join(email_ids[0].split())
status, data = con.fetch(fetch_ids, '(RFC822.HEADER BODY.PEEK[1])')
if status != 'OK':
raise Exception("Error running imap fetch for spinvox message: "
"%s" % status)
for i in range(len(email_ids[0].split())):
header_msg = email.message_from_string(data[i * 3 + 0][1])
subject = header_msg['Subject'],
date = header_msg['Date'],
body = data[i * 3 + 1][1] # includes some mime multipart junk
3
Вы можете попробовать это, чтобы получать информацию заголовка всех почт всего 1 Перейти к серверу.
import imaplib
import email
obj = imaplib.IMAP4_SSL('imap.gmail.com', 993)
obj.login('username', 'password')
obj.select('folder_name')
resp,data = obj.uid('FETCH', '1:*' , '(RFC822.HEADER)')
messages = [data[i][1].strip() + "\r\nSize:" + data[i][0].split()[4] + "\r\nUID:" + data[i][0].split()[2] for i in xrange(0, len(data), 2)]
for msg in messages:
msg_str = email.message_from_string(msg)
message_id = msg_str.get('Message-ID')
Смежные вопросы
- 1. Получение писем с IMAP, получение удаленных сообщений
- 2. IMAP папка/стратегия синхронизации сообщений?
- 3. imap удаление сообщений
- 4. Получение нескольких сообщений из очереди без цикла
- 5. PHP IMAP library - Получение ограниченного списка сообщений из почтового ящика
- 6. IMAP пакетная выборка часть сообщений
- 7. Поиск сообщений GMail через IMAP
- 8. получение нескольких изменений сразу с помощью vimdiff
- 9. android GCM Получение сообщений от нескольких устройств
- 10. Получение нескольких предупреждающих сообщений от поиска jsTree
- 11. Скалатра, Атмосфера и получение нескольких сообщений
- 12. Получение нескольких входящих сообщений для одной отправки
- 13. Удаление нескольких писем сразу
- 14. Spring Integration IMAP - получение с нескольких учетных записей электронной почты
- 15. Получение новых писем от Imap и Ajax
- 16. PHP Получение imap для работы
- 17. Получение почты с сервера IMAP?
- 18. Получение заголовков IMAP в PHP
- 19. получение символов барахла в IMAP
- 20. Сохранение сообщений IMAP XLS с PHP
- 21. JavaMail и IMAP. Как избежать сообщений подтверждения?
- 22. Golang IMAP: перемещение сообщений в другую папку
- 23. Обнаружение исключенных сообщений с помощью IMAP
- 24. Создание потока сообщений электронной почты из IMAP?
- 25. Извлечение сообщений с сервера POP или IMAP
- 26. Импорт почтовых сообщений в Solr (no IMAP)
- 27. Получение сообщений без переадресации портов
- 28. Получение сообщений как TcpClient
- 29. Получение приложения из gmail с помощью imap
- 30. Длина печати Python ИЛИ получение размера нескольких переменных сразу
Я хочу выполнить поиск, а затем получить все полученные сообщения за одну операцию. Если кто-то не добавит новый закон о физике, когда я не обращу внимания, я думаю, что все будет в порядке. –