Google Calendar API与Python集成 - 在Calendar API中更改发件人的电子邮件地址

问题描述 投票:0回答:1

我试图找出与Python(Django)集成的Google API,以便向用户发送日历事件。虽然一切正常但电子邮件是从我的谷歌服务帐户邮件地址发送的,其形式如下:

<project_name>-django@<project_name>.iam.gserviceaccount.com

这是来自我的json文件的client_email属性。请阅读此答案以实施:https://stackoverflow.com/a/37933674/3520404

现在,我希望从特定的邮件地址发送所有邮件,以便人们可以回复邮件。

这是我的代码:

import httplib2
from googleapiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials

def get_google_calendar_service():
    credentials = ServiceAccountCredentials.from_json_keyfile_name(
        filename=settings.GOOGLE_SERVICE_ACCOUNT_KEY_FILE_PATH,
        scopes=['https://www.googleapis.com/auth/calendar']
    )

    http = credentials.authorize(httplib2.Http())

    service = build('calendar', 'v3', http=http)

    return service


def create_event():
    service = get_google_calendar_service()

    start_datetime = datetime.datetime.now(tz=pytz.utc)
    event = service.events().insert(calendarId='<MY_EMAIL_ID>', body={
        'summary': 'Foo',
        'description': 'Bar',
        'start': {'dateTime': start_datetime.isoformat()},
        'end': {'dateTime': (start_datetime + timedelta(minutes=15)).isoformat()},
    }).execute()

    print(event)

我想发送来自<MY_EMAIL_ID>的所有日历邀请邮件,但这没有发生。无论如何在发送日历邀请邮件时控制FROM EMAIL ADDRESS?请帮忙。

python django google-calendar-api google-api-python-client
1个回答
1
投票

这是因为serviceaccount是创建事件的帐户。你确实有几个选择。

1)如果您拥有G Suite帐户,请在serviceaccount上使用域范围委派,并模拟您要使用的<MY_EMAIL_ID>。当然,它必须在G Suite域中。 This example用于Admin SDK,但它仍然是模拟的最佳示例。线credentials = credentials.create_delegated(user_email)是感兴趣的线。

2)没有G Suite帐户,那么您需要使用OAuth2登录流来获取<MY_EMAIL_ID>的OAuth2凭据,然后使用这些凭据对请求进行身份验证。 Extensive documentation is available

© www.soinside.com 2019 - 2024. All rights reserved.