[英]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)
...
service
可用于上传 eml 文件。如果我的理解是正确的,这个答案怎么样? 请将此视为几种可能的答案之一。
在运行脚本之前,请将文件名设置为 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.