我正在开发一个CRM应用程序,其中所有员工用户都拥有一个位于同一域下的GMail帐户。我是该域的管理员。以前,我使用IMAP对CRM中的所有GMail用户使用了自定义访问权限,以便获取他们发送和接收的所有电子邮件。为此,我询问了他们的GMail密码,这些密码未经加密就存储在数据库中(我知道这很糟糕)。现在,我想使用Google GMail API进行相同的工作,并且我有一些问题:
-是否可以实现我想要的功能(列出每个工作人员从GMail发送的所有电子邮件,并使用GMail API和给定的GMail帐户通过GMail发送电子邮件)?
-我不确定,但是我已经看到使用“服务帐户”和域范围的授权可以实现这一点。如果是这样,即使使用“服务帐户”,我也需要浏览OAuth 2.0吗?也许有人可以指导我学习教程,或向我展示实现我想要的工作流程吗?最好的可能是PHP。在此先感谢您阅读我!
解决了 !
对于正在寻找这种问题的人,我正在回答自己。
是的,我们能够列出属于同一域的帐户中的所有电子邮件。为此,我们必须使用google admin帐户创建具有广域授权的服务帐户。它为您提供了一个要下载的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";
}
?>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句