GMail apiclient:从收件箱标签中排除促销和社交网络邮件

时间:2015-04-28 09:02:57

标签: python email gmail-api oauth2client

我尝试使用apiclientoauth2client图书馆(从此处快速入门:https://developers.google.com/gmail/api/quickstart/quickstart-python)获取我的上一封邮件。

我能够检索所有我的最后一封邮件,包括促销邮件和社交网络邮件(我不在乎)。

脚本如下(如果你看到一些错误或方法更快,请告诉我):

# ... credentials mechanism identical to the quickstart one
gmail_service = build('gmail', 'v1', http=http

# Get the last mails :
last_mails = gmail_service.users().messages().list(userId="me", labelIds=["INBOX"]).execute()
for mailIds in last_mails["messages"]:
    all_infos = gmail_service.users().messages().get(userId="me", id=mailIds["id"]).get(userId="me", id=mailIds["id"]).execute()
    abstract = all_infos["snippet"]

    # Changing json structure
    headers = dict([(x["name"], x["value"]) for x in all_infos["payload"]["headers"]])
    dest = headers["Delivered-To"]
    source = headers["From"]
    title = headers["Subject"]

    print "Mail : %s\nFrom : %s\nTo   : %s\nAbst : %s\n-------" % ( 
            title, source, dest, abstract
            ) 

所以我的目标是从商家信息中删除促销社交网络邮件。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:4)

在向messages.list发送请求以及labelIds =“INBOX”时,请包含q = category:primary。我尝试了API explorer并且只能从收件箱中检索电子邮件。

响应:   200 OK

- Show headers -

  {
  "messages": [
  {
    "id": "14d0078c4b6e7b95",
     "threadId": "14d0078c4b6e7b95"
   },
  {
      "id": "14d0057a75894568",
     "threadId": "14d0057a75894568"
   },
     {
     "id": "14d004211587e8c0",
     "threadId": "14d004211587e8c0"
     },
    {
     "id": "14cfed9aef9e1217",
      "threadId": "14cfed9aef9e1217"
    },