通过 Gmail 发送电子邮件

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

我有一个宠物项目,我想要的只是让服务器每天向我发送一封状态电子邮件,说明一切都顺利更新等等。Gmail 过去允许您只需登录即可使用他们的 SMTP 服务器,但后来已更改为 OAuth。我正在关注这个教程

import base64
from email.mime.text import MIMEText
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from requests import HTTPError

SCOPES = [
        "https://www.googleapis.com/auth/gmail.send"
    ]
flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES)
creds = flow.run_local_server(port=0)

service = build('gmail', 'v1', credentials=creds)
message = MIMEText('This is the body of the email')
message['to'] = '[email protected]'
message['subject'] = 'Email Subject'
create_message = {'raw': base64.urlsafe_b64encode(message.as_bytes()).decode()}

try:
    message = (service.users().messages().send(userId="me", body=create_message).execute())
    print(F'sent message to {message} Message Id: {message["id"]}')
except HTTPError as error:
    print(F'An error occurred: {error}')
    message = None

我已在 Google Cloud 中设置了一个项目和一个应用程序,并下载了credentials.json 文件。我还在 API 和服务 > OAuth 同意屏幕 > 测试用户中将自己添加为测试用户。现在,每次我运行上面的代码时,它都会首先要求我同意,我认为这是测试用户应该规避的。如何授权测试应用程序?

gmail gmail-api
1个回答
0
投票

“在允许指定的测试用户授权您项目的 OAuth 客户端请求的范围之前,Google 会显示一条警告消息。该警告消息确认该用户对您的项目具有测试访问权限,但应考虑向某个用户授予对其数据的访问权限所带来的风险。未经验证的应用程序。”

设置 OAuth 同意屏幕 - 测试

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