Есть ли способ отправить электронное письмо с помощью Gmail Api с автоматической аутентификацией? Если у нас нет этой опции, нам нужно выбрать учетную запись аутентификации вручную. На самом деле это нежелательная ситуация. Выписка появляется на вкладке Google, которая открывается автоматически после выполнения шагов вручную:
Поток аутентификации завершен. Вы можете закрыть это окно.
После этого сообщения и аутентификации код отправляет электронное письмо на нужную учетную запись.
Example code:
from google.oauth2.credentials import Credentials
# Check if there is a valid token.pickle file
creds = None
if os.path.exists('token.pickle'):
with open('token.pickle', 'rb') as token:
creds = Credentials.from_authorized_user_file(token, SCOPES)
# If there are no (valid) credentials available, let the user log in.
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRET_FILE, SCOPES)
creds = flow.run_local_server(port=0)
# Save the credentials for the next run
with open('token.pickle', 'wb') as token:
pickle.dump(creds, token)
Нет. Это моя индивидуальная учетная запись Gmail. Я использовал его как для создания учетной записи Gcp, так и для целевого почтового адреса. @Джон Хэнли
Тогда вы не можете использовать широкое делегирование домена, что является ответом, который вы выбрали. Эта функция существует только для учетных записей Google Workspace, подключенных к Google Cloud.
Можем ли мы создать учетные записи рабочей области Google для отдельных учетных записей, подключенных к Google Cloud? (Полное делегирование домена) @John Hanley
Рабочая область основана на домене, которым вы владеете. Затем вы можете создавать новых пользователей в своем домене. Существует ежемесячная плата за пользователя.
Предположительно, ваш код должен выполняться в облаке (облачный запуск? облачная функция? и т. д.), поэтому он выполняется под какой-либо (предпочтительно определенной, выделенной, с соответствующими минимальными разрешениями IAM) сервисной учетной записью.
Вероятно, вы хотели бы делегировать этой учетной записи службы полномочия на уровне домена.
Вот ответ переполнения стека, в котором описан этот подход на питоне: Ошибка учетной записи службы Gmail API Authorized_client даже с полномочиями на уровне домена - как получить доступ к учетной записи gmail без каких-либо закрытых ключей из облачной функции.
Скрестим пальцы, фрагмент кода в этом ответе по-прежнему верен.
Код работает на normal.desktop, а идентификаторы клиентов OAuth 2.0 подготовлены для настольного приложения, и я не создал учетную запись службы. Я также определил comopse, разрешения на отправку для Gmail API. @аль-данн
@murattaşçı единственная автоматическая аутентификация, которую вы можете выполнить, - это учетные записи служб и делегирование всего домена, как объясняется в ответе аль-данна. Для обычной аутентификации пользователя поток OAuth неизбежен, и лучшее, что вы можете сделать, это получить токен обновления от пользователя и продолжать его использовать, но вам все равно придется вручную авторизовать приложение, чтобы получить этот токен в первую очередь. .
Является ли учетная запись Gmail частью Google Workspace?