Импорт файла MIME .eml в API Gmail с помощью функции импорта - PullRequest
0 голосов
/ 06 февраля 2020

Я - python разработчик и несколько новичок в использовании gMail API Google для импорта файлов .eml в учетную запись gMail.

Я получил всю необходимую основу для работы с моими учетными данными oAuth, и т. Д. c.

Однако я застрял там, где загружаю данные в файл. Мне нужна помощь при загрузке данных сообщения, чтобы поместить их в переменную.

Как создать ссылку на переменную message_data - в соответствующем формате - из моего файла примера электронной почты (который хранится в формате rfc822), который находится на диске?

Предполагается, что у меня есть файл на диске в /path/to/file/sample.eml ... как мне загрузить его в message_data в правильном формате для gMail Вызов API для импорта?

    ...
          # how do I properly load message_data from the rfc822 disk file?
          media = MediaIoBaseUpload(message_data, mimetype='message/rfc822')
          message_response = service.users().messages().import_(
              userId='me',
              fields='id',
              neverMarkSpam=True,
              processForCalendar=False,
              internalDateSource='dateHeader',
              media_body=media).execute(num_retries=2)

...

1 Ответ

1 голос
/ 06 февраля 2020
  • Вы хотите импортировать файл eml с помощью API Gmail.
  • Вы уже смогли получить и поместить значения для API Gmail.
  • Вы хотите добиться этого с помощью Google -api- python -client.
    • service в вашем скрипте может использоваться для загрузки файла eml.

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

Точка модификации:

  • В этом случае используется метод «Users.messages: insert».

Модифицированный скрипт:

Перед запуском скрипта укажите имя файла с путем к файлу eml.

eml_file = "###"  # Please set the filename with the path of the eml file.
user_id = "me"

f = open(eml_file, "r", encoding="utf-8")
eml = f.read()
f.close()
message_data = io.BytesIO(eml.encode('utf-8'))
media = MediaIoBaseUpload(message_data, mimetype='message/rfc822', resumable=True)
metadata = {'labelIds': ['INBOX']}
res = service.users().messages().insert(userId=user_id, body=metadata, media_body=media).execute()
print(res)

В приведенном выше скрипте следующие модули также требуется.

import io
from googleapiclient.http import MediaIoBaseUpload

Примечание:

  • В приведенном выше измененном сценарии {'labelIds': ['INBOX']} используется в качестве метаданных. В этом случае импортированный файл eml можно увидеть на INBOX Gmail. Если вы хотите изменить это, пожалуйста, измените это.

Ссылка:

Если я неправильно понял ваш вопрос, и это был не тот результат, которого вы хотите, прошу прощения.

...