2017-01-16 8 views
2

Я работаю над приложением CRM, где все сотрудники пользователей имеют учетную запись GMail, находящуюся в том же домене. Я являюсь администратором этого домена. До этого я использовал пользовательский доступ для всех пользователей GMail в своем CRM, используя IMAP, чтобы получить все отправленные и полученные ими электронные письма. Для этого я спросил их пароли GMail, которые хранятся без шифрования в моей БД (это дерьмово, я знаю). Теперь я хочу выполнить ту же работу, но с API Google GMail, и у меня есть некоторые вопросы:Учетная запись службы Google GMail API для перечисления электронных писем с нескольких учетных записей

-Can Я достигаю того, что хочу (список всех сообщений электронной почты от GMail для каждого пользователя штата, а также отправку электронная почта с помощью GMail с использованием GMail API и данной учетной записи GMail)?

-Не уверен, но я видел, что это возможно, используя «служебную учетную запись» и передачу полномочий по всему домену. Если это правда, мне нужно пройти через OAuth 2.0 даже при использовании «учетной записи службы»? Может быть, кто-нибудь проведет меня в учебнике или покажет мне рабочий процесс, чтобы добиться того, чего я хочу, пожалуйста? Лучше всего было бы в PHP. Заранее благодарим меня за чтение!

+0

Вы можете проверить [Использование OAuth 2.0 для сервера для серверных приложений] (HTTPS: //developers.google.com/api-client-library/php/auth/service-accounts) для получения дополнительной информации, рекомендаций и даже образцов, которые вам понадобятся о том, как приложение может выполнить поток OAuth 2.0 от сервера к серверу, используя клиентской библиотеки API-интерфейсов Google для PHP. Однако обратите внимание, что, хотя вы можете использовать учетные записи служб в приложениях, которые запускаются из домена Google Apps, учетные записи служб не являются членами вашей учетной записи Google Apps и не подлежат политикам домена, установленным администраторами Google Apps. – Teyam

ответ

1

РЕШЕННЫЙ!

Я отвечаю сам за людей, которые ищут такой вопрос.

Да, мы можем перечислить все электронные письма со счетов, принадлежащих одному домену. Для этого мы должны создать учетную запись службы с широковещательным делегированием полномочий, используя учетную запись администратора Google. Он дает вам Json-файл (*) для загрузки. Вы положили его на свой сервер.

OAuth2.0 не имеет никакого отношения.

Тогда с этим простым куском кода, который вы получаете сообщения от учетной записи, которую (в домене):

<?php 
require_once __DIR__.'/vendor/autoload.php'; // <-- path for the google-api lib autoload 
// simple function to get e-mails' headers 
function getHeader($headers, $name) { 
    foreach($headers as $header) { 
     if($header['name'] == $name) { 
      return $header['value']; 
     } 
    } 
} 

$user = "[email protected]"; 

putenv('GOOGLE_APPLICATION_CREDENTIALS='path/to/your/credentials.json'); // (*) 
$client = new Google_Client(); 
$client->useApplicationDefaultCredentials(); 
$client->setScopes(['https://mail.google.com']); 
$client->setSubject($user); 

$service = new Google_Service_Gmail($client); 

$results = $service-> users_messages->listUsersMessages($user); 
foreach($results as $mail){ 
    $message = $service->users_messages->get($user, $mail['id']); 
    $headers = $message->getPayload()->getHeaders(); 
    $subject = getHeader($headers, 'Subject'); 
    echo $subject."\n"; 
} 
?> 
Смежные вопросы