2017-01-16 11 views
2

私は、すべてのスタッフのユーザーが同じドメインの下にあるGMailアカウントを持っているCRMアプリケーションに取り組んでいます。私はこのドメインの管理者です。 前に、IMAPを使ってCRM内のすべてのGMailユーザにカスタムアクセスを使用して、それらによって送受信されたすべての電子メールを取得しました。そのために、自分のDBに暗号化せずに保存されているGmailのパスワードを尋ねました。 私は同じ仕事をしたいが、Google GMail APIを使ってみたいと思っています。複数のアカウントからの電子メールを一覧表示するGoogle GMail APIサービスアカウント

- 私は自分の望むものを達成することができます(すべてのスタッフのメールにすべての電子メールを記載して送信しますGMail APIと特定のGMailアカウントを使用してメールを送信する)

- 私は確信していますが、「サービスアカウント」とドメイン全体の権限委任を使用して可能性があることがわかりました。それが本当であれば、「サービスアカウント」を使用する場合でもOAuth 2.0を経由する必要がありますか?誰かが私をチュートリアルで案内したり、私が欲しいものを達成するためのワークフローを見せてくれますか?ベストはPHPにある可能性があります。 私を読んでくれてありがとう!

+0

あなたは(HTTPS [サーバーアプリケーションへのサーバーのためのOAuth 2.0を使用する]チェックすることもできます。 //developers.google.com/api-client-library/php/auth/service-accounts)を使用して、アプリケーションがサーバー間のOAuth 2.0フローをどのように完了することができるかについて、さらに詳しい情報、ガイダンス、サンプルが必要です。 PHP用Google APIクライアントライブラリ ただし、Google Appsドメインから実行されるアプリケーションではサービスアカウントを使用できますが、サービスアカウントはGoogle Appsアカウントのメンバーではなく、Google Apps管理者が設定したドメインポリシーの対象ではありません。 – Teyam

答えて

1

SOLVED!

私はこの種の質問を探している人たちのために自分自身に答えています。

はい、同じドメインに属するアカウントのすべての電子メールを一覧表示できます。 そのためには、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"; 
} 
?> 
関連する問題