要明确:
代码:
import base64
from google.oauth2 import service_account
from email.message import EmailMessage
from googleapiclient.discovery import build
creds = service_account.Credentials.from_service_account_file(
filename = 'client_secret.json',
scopes = ['https://mail.google.com/'],
)
service = build('gmail', 'v1', credentials=creds)
mime_message = EmailMessage()
mime_message['To'] = 'receiving_accont@gmail.com'
mime_message['From'] = 'serviceaccountname@appname.iam.gserviceaccount.com'
mime_message['Subject'] = 'Test Subject'
mime_message.set_content('Test Message')
encoded_message = base64.urlsafe_b64encode(mime_message.as_bytes()).decode()
create_draft_request_body = {
'message': {'raw': encoded_message}
}
draft = service.users().drafts().create(userId="myuserid",body=create_draft_request_body).execute()
错误:
当请求https://gmail.googleapis.com/gmail/v1/users/myclientid/drafts?alt=json返回“前提检查失败”时,shell
发布于 2022-11-13 03:55:13
failedPrecondition意味着在gmail中使用服务帐户的条件之一没有得到满足。
以便在Gmail中使用服务帐户。必须将域宽代表团配置为您工作空间帐户上的用户。
服务帐户本身无法发送电子邮件。要100%清楚:你想做什么是不可能的。必须将授权配置中的主题配置为工作区域中的用户。serviceaccountname@appname.iam.gserviceaccount.com
没有发送电子邮件的权限。
def _create_client(subject):
credentials = service_account.Credentials
credentials = credentials.from_service_account_file('credentials/service_account.json',
scopes=['https://www.googleapis.com/auth/gmail.settings.sharing',
'https://www.googleapis.com/auth/gmail.settings.basic'],
subject=subject)
service = discovery.build('gmail', 'v1', credentials=credentials)
return service
我通常向我的客户推荐的是创建一个虚拟的no-reply@yourdomain.com
用户,并从中发送电子邮件。
https://stackoverflow.com/questions/74419937
复制相似问题