Google 日历 API 与 Python 集成 - 在日历 API 中更改发件人的邮件地址
Google calendar API integration with Python - Change sender's mail address in Calendar API
我正在尝试找出 Google API 与 Python(Django) 的集成,以便将日历事件发送给用户。虽然一切 运行 都很好,但电子邮件是从我的 google 的服务帐户邮件地址发送的,格式如下:
<project_name>-django@<project_name>.iam.gserviceaccount.com
来自我的 json 文件的 client_email
属性。
请阅读此答案以进行实施:
现在,我希望所有邮件都从特定的邮件地址发送,以便人们可以回复邮件。
这是我的代码:
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
的方法?请帮忙
这是因为服务帐户是创建事件的帐户。不过,您确实有多种选择。
1) 如果您有 G Suite 帐户,请在服务帐户上使用全域委派,并模拟您要使用的 <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.
我正在尝试找出 Google API 与 Python(Django) 的集成,以便将日历事件发送给用户。虽然一切 运行 都很好,但电子邮件是从我的 google 的服务帐户邮件地址发送的,格式如下:
<project_name>-django@<project_name>.iam.gserviceaccount.com
来自我的 json 文件的 client_email
属性。
请阅读此答案以进行实施:
现在,我希望所有邮件都从特定的邮件地址发送,以便人们可以回复邮件。
这是我的代码:
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
的方法?请帮忙
这是因为服务帐户是创建事件的帐户。不过,您确实有多种选择。
1) 如果您有 G Suite 帐户,请在服务帐户上使用全域委派,并模拟您要使用的 <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.