【问题标题】:How can I print the subject and body of a GMail email using the python API?如何使用 python API 打印 GMail 电子邮件的主题和正文?
【发布时间】:2021-04-04 03:59:31
【问题描述】:
    results = service.users().messages().list(
        userId='me', labelIds=['INBOX'], maxResults=1).execute()
    labels = results.get('messages', [])
    if not labels:
        print('No labels found.')
    else:
        print('Labels:')
        for label in labels:
            print(label['id'])

此脚本打印最新电子邮件的消息 ID。如何打印电子邮件的主题和正文?我找不到任何有关如何操作的文档

【问题讨论】:

    标签: python python-3.x gmail gmail-api


    【解决方案1】:

    1.为了使您的代码不那么混乱,建议您将消息称为这样而不是标签:

        results = service.users().messages().list(
            userId='me', labelIds=['INBOX'], maxResults=1).execute()
        messages = results.get('messages', [])
        if not messages:
            print('No messages found.')
        else:
            print('Messages:')
            for message in messages:
                print(message['id'])
    

    2。看看message resource

    {
      "id": string,
      "threadId": string,
      "labelIds": [
        string
      ],
      "snippet": string,
      "historyId": string,
      "internalDate": string,
      "payload": {
        object (MessagePart)
      },
      "sizeEstimate": integer,
      "raw": string
    }
    

    payload 包括对象MessagePart,其中包含以下嵌套对象:

    {
      "partId": string,
      "mimeType": string,
      "filename": string,
      "headers": [
        {
          object (Header)
        }
      ],
      "body": {
        object (MessagePartBody)
      },
      "parts": [
        {
          object (MessagePart)
        }
      ]
    }
    

    此资源允许访问bodysubject - 后者包含在消息headers 中:

    {
      "name": string,
      "value": string
    }
    

    但是,这些对象不会与users.messages.list一起返回,而只会与users.messages.get一起返回

    示例:

        results = service.users().messages().list(
            userId='me', labelIds=['INBOX'], maxResults=1).execute()
        messages = results.get('messages', [])
        if not messages:
            print('No messages found.')
        else:
            print('Messages:')
            for message in messages:
                print(message['id'])
                messageResource = service.users().messages().get(userId="me",id=message['id']).execute()
                headers=messageResource["payload"]["headers"]
                subject= [j['value'] for j in headers if j["name"]=="Subject"]
                print(subject)  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-04
      • 2017-03-07
      • 2022-11-29
      • 1970-01-01
      • 1970-01-01
      • 2017-11-01
      • 2017-11-01
      • 1970-01-01
      相关资源
      最近更新 更多