【问题标题】:Importing mime .eml file to gmail API using the import function使用导入功能将 mime .eml 文件导入 gmail API
【发布时间】:2020-02-06 12:45:16
【问题描述】:

我是一名 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)

...

【问题讨论】:

    标签: python gmail-api


    【解决方案1】:
    • 您想使用 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 文件。如果你想改变这个,请修改这个。

    参考:

    如果我误解了您的问题并且这不是您想要的结果,我深表歉意。

    【讨论】:

    • 您可以使用 Google Apps 脚本在 Google Drive 中导入 eml 文件吗?也许打电话给 Gmail.Users.Messagse.insert?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    • 2014-10-25
    • 2012-06-13
    • 2012-08-03
    • 1970-01-01
    • 2013-01-14
    • 2020-11-04
    相关资源
    最近更新 更多