📜  google 客户端 php 获取收件箱消息 - PHP (1)

📅  最后修改于: 2023-12-03 15:15:24.653000             🧑  作者: Mango

Google 客户端 PHP 获取收件箱消息

如果您需要从 Google Mail(Gmail)的收件箱获取邮件消息,可以使用 PHP Google 客户端库来实现。

安装

首先,需要安装 Google API 客户端库。您可以通过以下命令来安装:

composer require google/apiclient:"^2.11"
认证

接下来,您需要进行 OAuth2 认证,以授权访问邮件。您可以使用 Google Auth 公共库和 Google API 客户端库来实现此功能。

require_once __DIR__ . '/vendor/autoload.php'; 

$client = new Google_Client();
$client->setAuthConfig('credentials.json');
$client->addScope(Google_Service_Gmail::GMAIL_READONLY); 

$tokenPath = 'token.json';

if (file_exists($tokenPath)) {
    $accessToken = json_decode(file_get_contents($tokenPath), true);
    $client->setAccessToken($accessToken);
}

// 如果没有存储OAuth2凭据,进行授权
if ($client->isAccessTokenExpired()) {
    //获取新的访问令牌
    $refreshTokenSaved = $client->getRefreshToken();
    $client->fetchAccessTokenWithRefreshToken($refreshTokenSaved);
    // 存储新的访问令牌
    $newAccessToken = $client->getAccessToken();
    $newAccessToken['refresh_token'] = $refreshTokenSaved;
    file_put_contents($tokenPath, json_encode($newAccessToken));
}
获取收件箱消息

您需要使用 Gmail API 客户端来获取收件箱消息。首先,需要创建 Gmail API 客户端实例。

$service = new Google_Service_Gmail($client);
$user = 'me';
$results = $service->users_messages->listUsersMessages($user, array('maxResults' => 10));
$messageList = $results->getMessages();
循环消息列表

现在,您可以循环访问邮件消息列表,以获取邮件消息的详细信息。

foreach ($messageList as $mlist) {
    $optParamsGet2['format'] = 'full';
    $single_message = $service->users_messages->get('me', $mlist->id, $optParamsGet2);
    $payload = $single_message->getPayload();
    $headers = $payload->getHeaders();
    $snippet = $single_message->getSnippet();
    $subject = '';
    $from = '';
    $date = '';

    // 获取邮件主题,发件人,日期
    foreach ($headers as $header) {
        if ($header->getName() == 'Subject') {
            $subject = $header->getValue();
        }
        if ($header->getName() == 'From') {
            $from = $header->getValue();
        }
        if ($header->getName() == 'Date') {
            $date = $header->getValue();
        }
    }

    // 自定义处理方法
    // 这里展示邮件主题和发件人,并且截取前20个字符作为邮件内容。
    echo "From: $from<br>";
    echo "Subject: $subject<br>";
    echo "Message: ".substr($snippet, 0, 20)."...<br><br>";
}
结论

在这个简单的示例中,您学会了如何使用 Google API 客户端库和 Gmail API 来从收件箱获取邮件消息。这种方法可以应用于更广泛的应用程序,例如电子邮件提醒或自动化过程。