Google GMail API服务帐户以列出来自多个帐户的电子邮件

米切尔·罗密奇

我正在开发一个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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何仅获取今天的电子邮件-Gmail + Google脚本

如何更改Google API“服务帐户”名称/电子邮件地址

与服务帐户电子邮件共享Google表格

Google的GMail API下载附件

使用Google Apps脚本删除Gmail电子邮件的附件

在收到的电子邮件中触发的Google Gmail脚本

使用Google AppEngine的Gmail API

使用服务帐户密钥列出来自Google驱动器的公共共享文件,但未获取公共文件

Google PubSub / Gmail Webhook:发送电子邮件时始终从PubSub接收多个POST请求

Gmail API支持UserID参数,但是如何设置可以访问多个邮箱的Google帐户?

C#通过Gmail帐户发送电子邮件

阅读来自Gmail电子邮件的邮件和主题,并使用Google Apps脚本写入Google表格

如何使用cURL在php中使用Google gmail API发送电子邮件?

为Google服务帐户电子邮件创建别名?

Google Cloud gcloud为服务帐户电子邮件启用API服务

使用SMTP在Gmail帐户中发送电子邮件

Google Apps电子邮件设置API和带有服务帐户的oauth2.0凭据

Google脚本:使用GMail导入的帐户发送电子邮件

通过Gmail API Google App Engine发送电子邮件

从 Gmail 帐户在 Django 中发送电子邮件

在 Gmail 应用中检索帐户的电子邮件地址

如何使用 php 和 google gmail api 将电子邮件发送到多个电子邮件抄送 ID?

访问委派的 Gmail 帐户以获取带标签的电子邮件

如何使用服务帐户访问 G Suite 电子邮件帐户的 GMAIL API

从 Google/GMail 中的电子邮件中检索 accountId

gmail API 使用服务帐户删除电子邮件

通过 SMTP 向 Gmail 帐户发送电子邮件

使用服务帐户凭据通过 Google People api 访问 Gmail 联系人总是返回 null

到现在 Google 停止了不太安全的应用程序,如何使用 PHPMailer 从 GMail 帐户发送电子邮件?