【发布时间】:2020-07-12 15:28:11
【问题描述】:
我正在尝试使用 Gmail API 发送一封简单的测试电子邮件,但我找到的每个代码示例都不断收到相同的错误。
我现在的代码是这样的:
def validationService():
SCOPES = ['https://mail.google.com/']
SERVICE_ACCOUNT_FILE = 'creds.json'
creds = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)
service = build('gmail', 'v1', credentials=creds)
return service
def SendMessage(service, user_id, message):
try:
message = (service.users().messages().send(userId=user_id, body=message).execute())
print('Message Id:',message['id'])
return message
except errors.HttpError as error:
print('An error occurred:', error)
def CreateMessage(sender, to, subject, message_text):
message = MIMEText(message_text)
message['to'] = to
message['from'] = sender
message['subject'] = subject
return {'raw': base64.urlsafe_b64encode(message.as_string().encode()).decode()}
service = validationService()
email = CreateMessage("sendermail@gmail.com", "receiverrmail@gmail.com", "Test", "This is a test")
sent = SendMessage(service, "sendermail@gmail.com", email)
返回
>>> An error occurred: <HttpError 400 when requesting https://www.googleapis.com/gmail/v1/users/me/messages/send?alt=json returned "Bad Request">
我也不明白 CreateMessage 中的“sender”参数和 SendMessage 中的 userId 之间的区别。
如果有目的,我使用的是服务帐户凭据
- 谢谢!
【问题讨论】:
标签: python google-api gmail-api google-api-python-client service-accounts