Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 26.08.2017
Сообщений: 5

Как скопировать отправленные письма в текстовый файл?

24.09.2017, 14:11. Показов 2562. Ответов 8

Студворк — интернет-сервис помощи студентам
Хочу создать архив своей электронной переписки в отдельном файле.
С входящими письмами получилось, но не пойму, как выйти на Отправленные письма.
Кто знает, подскажите!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.09.2017, 14:11
Ответы с готовыми решениями:

Как скопировать тему и тело письма в текстовый файл?
Как скопировать тему и тело письма в текстовый файл

Письма, отправленные с Outlook 16, не копируются в папку "Отправленные" в Яндекс почте
Письма, отправленные с Outlook 16, не копируются в папку "Отправленные" в Яндекс почте. В то же самое время, письма, отправленные, с...

Исходный текстовый файл скопировать в результирующий текстовый файл, удалив слова менее N1 символов
Не так давно я просил помощь в написании программы на си: Исходный текстовый файл скопировать в результирующий текстовый файл, удалив слова...

8
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
24.09.2017, 15:06
Цитата Сообщение от a_shel Посмотреть сообщение
не пойму, как выйти на Отправленные письма
Каталога с именем OUTBOX для отправленных (наподобие INBOX для входящих) не существует.
Зато существует это:
Code
1
2
3
4
5
6
7
8
# идентификаторы папок
folders = {
'Отправленные': b"&BB4EQgQ,BEAEMAQyBDsENQQ9BD0ESwQ1-",
'Исходящие':    b"&BBgEQQRFBD4ENARPBEkEOAQ1-",
'Спам':         b"&BCEEPwQwBDw-",
'Черновики':    b"&BCcENQRABD0EPgQyBDgEOgQ4-",
'Удаленные':    b"&BCMENAQwBDsENQQ9BD0ESwQ1-"
}
Пример использования:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def mailbox_auth(user,pasw,server,box_type="INBOX"):
    """ аутентификация"""
    box = imaplib.IMAP4(server)
    box.starttls()
    box.login(user, pasw)
    box.select(box_type)
    return box 
    
# пользовательская функция авторизации    
box = mailbox_auth(user,pasw,server,box_type=b'&BB4EQgQ,BEAEMAQyBDsENQQ9BD0ESwQ1-')
# или так если установить imap_utf7
box = mailbox_auth(user,pasw,server,box_type=imap_utf7.encode('Отправленные'))
mails = mailbox_search_list(box,'ALL')  # пользовательская функция извлечения писем
print(mails)
mailbox_logout(box)
0
0 / 0 / 0
Регистрация: 26.08.2017
Сообщений: 5
24.09.2017, 18:18  [ТС]
Спасибо, Garry Galler!
А не подскажете, что за функция - box.starttls() ?
Как и mailbox_search_list(box,'ALL') ?
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
24.09.2017, 18:39
mailbox_search_list - это просто моя функция получения писем. У вас должна быть своя - вы же как то написали получение входящих. starttls - это функция из imaplib - странно что вы про нее не знаете: The ssl_context argument is optional and should be a ssl.SSLContext object. This will enable encryption on the IMAP connection.
Без создания SSL контекста у вас тот же яндекс выдаст: imaplib.error: LOGIN command error: BAD [b'[PRIVACYREQUIRED] LOGIN Working without SSL/TLS encryption is not allowed.
0
0 / 0 / 0
Регистрация: 26.08.2017
Сообщений: 5
24.09.2017, 19:46  [ТС]
Извините, но не посмотрите мой кусок кода. В чем тут ошибка:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def mailbox_auth(user,pasw,server,box_type):
            #аутентификация
            box = imaplib.IMAP4_SSL(server)
            #box.starttls()
            box.login(user, pasw)
            box.select(box_type)
            return box 
    
        n = 0
        tp = input ('Письма: 1 - Входящие, 2 - Отправленные:')
        if tp == '2':
            box_type = b'&BB4EQgQ,BEAEMAQyBDsENQQ9BD0ESwQ1-' # для Отправленных писем;
        else:
            box_type = 'INBOX' #  для Входящих писем       
        file_subj = open('subj_' + tp + adr + '.txt',"w")
        server = 'imap.' + adr
        # пользовательская функция авторизации          
        m = mailbox_auth(user,pasw,server,box_type) 
        typ, data = m.search(None, 'ALL')  # пользовательская функция извлечения писем
Для Входящих работает нормально, а для Отправленных выдает: imaplib.error: Command SEARCH illegal in state AUTH, only allowed in states SELECTED.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
24.09.2017, 20:24
У меня работает как с IMAP4\starttls, так и с IMAP4_SSL.
Проверьте существует ли папка с указанным идентификатором на сервере:

Python
1
2
3
4
5
6
def get_boxes(box):
    a,folders = box.list()
    return folders or []
 
box = mailbox_auth(user,pasw,server,box_type)
print(get_boxes(box))
0
0 / 0 / 0
Регистрация: 26.08.2017
Сообщений: 5
24.09.2017, 23:51  [ТС]
Спасибо!
Строка в моем случае для gmail.com должна выглядеть так: '[Gmail]/&BB4EQgQ,BEAEMAQyBDsENQQ9BD0ESwQ1-'
Но вот для яндекса нащупать никак не удается

Добавлено через 18 минут
Еще раз спасибо - всё получилось. На Яндексе папка с Отправленными письмами называется 'Sent'
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
25.09.2017, 01:06
Цитата Сообщение от a_shel Посмотреть сообщение
На Яндексе папка с Отправленными письмами называется 'Sent'
Хм, на моей яндекс почте никакого Sent нет... В случае наличия кириллических наименований папок на пользовательском ящике у них есть только бинарные идентификаторы в utf7.
0
0 / 0 / 0
Регистрация: 26.08.2017
Сообщений: 5
25.09.2017, 01:53  [ТС]
За что купил, за то и продал: по вашему совету вывел список идентификаторов и подобрал подходящий.
Проекты: b’(\\Marked \\HasNoChildren \\ Drafts) “|” Drafts’
Входящие: b’(\\Marked \\NoInteriors) “|” INBOX’
Исходящие: b’(\\Unmarked \\HasNoChildren) “|” Outbox’
Отправленные: b’(\\Marked \\HasNoChildren \\ Sent) “|” Sent’
Спам: b’(\\Marked \\HasNoChildren \\ Junk) “|” Spam’
Мусор: b’(\\Marked \\HasNoChildren \\ Trash) “|” Trash’
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.09.2017, 01:53
Помогаю со студенческими работами здесь

Как перенести отправленные письма с yandex в Outlook
Добрые день! Необходимо решить следующую задачу. Установил MS Outlook. Настроил под ящик на yandex. Необходимо перенести все...

Как записать все письма в текстовый файл?
Привет, есть код читаем почту перелистываем все письма в почте и записываем в текстовый файл, в тхт всегда последнее письмо , как это...

Как скопировать текстовый экран в файл
Мне ещё не приходилось видеть на форуме применение функции SCREEN. Возможно ее заслонил собой оператор SCREEN. Между тем эта функция...

Как скопировать название выбранного файла в текстовый файл?
здравствуйте как с помощью OpenFileDialog выбрать файл а после скопировать его в текстовик который находится в папке Debug?

Как скопировать все данные из ComboBox в текстовый файл?
Помогите, пожалуйста. Вопрос, следующий как скопировать все данные из ComboBox в текстовый файл, так что бы потом можно было загрузить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru