GMAIL API:使用gmail API将所有客户端gmail消息转发到gmail地址

时间:2018-11-10 10:34:43

标签: python oauth-2.0 google-api gmail gmail-api

当前,我正在编写一个程序,将用户的所有Gmail邮件转发到Gmail地址 我从以下机构获得帮助:Link 我创建了所有存储,凭证文件等 但是当我尝试运行程序时,出现错误:

Traceback (most recent call last):
  File "hh.py", line 40, in <module>
    thadari()
  File "hh.py", line 30, in thadari
    result = GMAIL.users().settings().forwardingAddresses().create(userId='me', body=address).execute()
  File "/home/vishalthadari/Documents/Seperation 1/virutalenv/python 3/env/lib/python3.6/site-packages/googleapiclient/_helpers.py", line 130, in positional_wrapper
    return wrapped(*args, **kwargs)
  File "/home/vishalthadari/Documents/Seperation 1/virutalenv/python 3/env/lib/python3.6/site-packages/googleapiclient/http.py", line 842, in execute
    raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 403 when requesting https://www.googleapis.com/gmail/v1/users/me/settings/forwardingAddresses?alt=json returned "Insufficient Permission">

我已经授予了发送邮件的权限,但我不知道为什么会出现错误。我在这里阅读以下内容,没有转发消息的范围:link 还是我需要为此购买Google gsuite?在这里定义:Link 在gmail.settings.sharing

我知道整个代码墙都是不可重用的,但是由于我是Google API的新手,所以我认为它们是我代码中的小错误:

from apiclient import discovery
from apiclient import errors
from httplib2 import Http
from oauth2client import file, client, tools
import base64
from bs4 import BeautifulSoup
import re
import time
import dateutil.parser as parser
from datetime import datetime
import datetime
import csv



def thadari():
    SCOPES = 'https://www.googleapis.com/auth/gmail.send'
    store = file.Storage('storage.json')
    creds = store.get()
    if not creds or creds.invalid:
        flow = client.flow_from_clientsecrets('client_secret.json', SCOPES)
        creds = tools.run_flow(flow, store)
    GMAIL = discovery.build('gmail', 'v1', http=creds.authorize(Http()))

    user_id = 'me'
    label_id_one = 'INBOX'


    address = {'forwardingEmail': 'girlsdontloveme75@gmail.com'}
    result = GMAIL.users().settings().forwardingAddresses().create(userId='me', body=address).execute()
    if result.get('verificationStatus') == 'accepted':
        body = {
        'emailAddress': result.get('forwardingEmail'),
        'enabled': True,
        'disposition': 'trash'
    }   


if __name__ == '__main__':
    thadari()

这是正确的方法吗?或者有更好的方法可以做到这一点,请帮助我

预先感谢

0 个答案:

没有答案