簡體   English   中英

使用導入功能將 mime .eml 文件導入 gmail API

[英]Importing mime .eml file to gmail API using the import function

我是一名 Python 開發人員,對使用 Google 的 gMail API 將 .eml 文件導入 gMail 帳戶有點陌生。

我已經完成了所有基礎工作,使我的 oAuth 憑據工作等。

但是,我被困在加載數據文件的位置。 我需要幫助將消息數據加載到變量中。

如何從磁盤上的示例電子郵件文件(以 rfc822 格式存儲)以適當的格式創建message_data變量引用?

假設我在 /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)

...
  • 您想使用 Gmail API 導入 eml 文件。
  • 您已經能夠獲取和放置 Gmail API 的值。
  • 您想使用 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']}用作元數據。 在這種情況下,可以在 Gmail 的收件箱中看到導入的 eml 文件。 如果你想改變這個,請修改這個。

參考:

如果我誤解了您的問題並且這不是您想要的結果,我深表歉意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM