Создание черновика сообщения в Gmail с использованием imaplib в Python - PullRequest
8 голосов
/ 22 сентября 2011

Я хочу написать модуль Python, который отправляет данные в черновик сообщения в учетной записи G-mail.Около двух недель назад я написал сценарий, который отлично работал с использованием imaplib.Упрощенный пример моего модуля приведен ниже.(Я создал тестовый адрес электронной почты, чтобы каждый мог проверить этот скрипт.)

import imaplib
import time
conn = imaplib.IMAP4_SSL('imap.gmail.com', port = 993)
conn.login('testpythoncreatedraft@gmail.com', '123456aaa')
conn.select('[Gmail]/Drafts')
conn.append("[Gmail]/Drafts", '', imaplib.Time2Internaldate(time.time()), "TEST")

Он использовал функцию .append, но сегодня, когда я запускаю модуль, он выдает следующую ошибку:

Traceback (most recent call last):
  File "C:/Windows/System32/email_append_test.py", line 6, in <module>
    conn.append("[Gmail]/Drafts", '', imaplib.Time2Internaldate(time.time()), "TEST")
  File "C:\Python26\lib\imaplib.py", line 317, in append
    return self._simple_command(name, mailbox, flags, date_time)
  File "C:\Python26\lib\imaplib.py", line 1060, in _simple_command
    return self._command_complete(name, self._command(name, *args))
  File "C:\Python26\lib\imaplib.py", line 895, in _command_complete
    raise self.error('%s command error: %s %s' % (name, typ, data))
imaplib.error: APPEND command error: BAD ['Invalid Command']

Как я уже говорил, этот модуль работал раньше.Он успешно создал черновики сообщений со строкой «Тест» в своем теле.Поскольку этот скрипт работал, скорее всего, он как-то связан с изменениями, внесенными Google в функции IMAP учетных записей G-mail, но, похоже, ошибка указывает на ошибку в команде APPEND.Я протестировал скрипт python на двух разных компьютерах, чтобы увидеть, не поврежден ли мой библиотечный файл, но осталась та же ошибка.

Также я использую Python 2.6.Любая помощь приветствуется.

1 Ответ

6 голосов
/ 26 ноября 2011

Перед conn.append добавить следующее:

import email

Затем измените строку conn.append на:

conn.append("[Gmail]/Drafts",
            '',
            imaplib.Time2Internaldate(time.time()),
            str(email.message_from_string('TEST')))
...