Как отправлять электронные письма из учетной записи компьютера с помощью Gmail API / OAuth2 - PullRequest
1 голос
/ 03 марта 2020

У меня есть веб-приложение, которое в настоящее время отправляет электронные письма с автоматическим сбросом пароля с адреса электронной почты в стиле «без ответа» в домене gsuite. В настоящее время он работает просто с именем пользователя и паролем через SMTP (с TLS), однако для того, чтобы работающий администратор GSuite (а не я) должен был включать LSA.

Как я уверен, большинство знает Google постепенно прекращает работу в следующем году, поэтому в будущем мне придется использовать OAuth2 с API Gmail (я думаю). Я довольно новичок в этом, так что простите мое невежество, но, хотя я успешно выяснил, как отправлять электронные письма от имени пользователя (посредством чего пользователю необходимо предоставить разрешение, чтобы сделать это), я не понял, как отправлять электронные письма от имени автоматизированной учетной записи, где не будет никого, кто бы предоставлял такую ​​авторизацию каждый раз.

Исходя из моего прочтения, похоже, что эту учетную запись необходимо настроить в качестве служебной учетной записи с "domain wide делегирование "предоставлено администратором GSuite. Однако, если я правильно понимаю, это даст этой учетной записи службы доступ к электронной почте от имени ВСЕХ пользователей в этом домене, а не только к одной учетной записи электронной почты, которую я хотел бы использовать. Это верно? Есть ли способ ограничить доступ к отдельным аккаунтам? (Я подозреваю, что администратор будет нервничать по этому поводу). Или я совершенно не на той странице, чтобы узнать, как действовать здесь?

Не уверен, что это действительно имеет значение, но мое текущее решение реализовано в PHP.

Буду признателен за любой совет

1010 * Спасибо

1 Ответ

1 голос
/ 05 марта 2020

Я дам вам хорошие новости, а другие не очень хорошие.

1) Хорошие новости

Хорошие новости - вы находитесь на правильной странице обо всех исследованиях, которые вы провели о учетных записях службы и да, вам необходимо установить делегирование домена в целом , поскольку учетная запись службы - это бот, который должен выдавать себя за реального человека, чтобы отправлять электронные письма в его / ее поведении ,

2) Плохие новости

Плохие новости на данный момент: вы не можете ограничивать пользователей, которых хотите выдать себя за свой домен, используя делегирование всего домена. Вы должны будете применить свой собственный лог c в своем бэкэнде, который будет выполнять какой-то процесс безопасности, прежде чем учетная запись службы будет выдавать себя за этого пользователя. Будем надеяться, что Google в будущем может добавить функцию ограничения определенных пользователей в домене.

Дополнительная информация

На всякий случай вы все еще не знаете, как выдать себя за пользователя с помощью учетной записи службы, используя PHP. Вот небольшой пример:

// Path to the service account json file
putenv('GOOGLE_APPLICATION_CREDENTIALS=/path/to/service_account.json');

// User to impersonate
$user = "email@domain";

$client = new Google_Client();
$client->useApplicationDefaultCredentials(); 
$client->setApplicationName("My app name");
$client->setScopes(Google_Service_Gmail::MAIL_GOOGLE_COM);  
$client->setSubject($user); // Set the user to impersonate;

// Construct the service object.
$service = new Google_Service_Gmail($client);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...