📅  最后修改于: 2023-12-03 15:15:24.653000             🧑  作者: Mango
如果您需要从 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 来从收件箱获取邮件消息。这种方法可以应用于更广泛的应用程序,例如电子邮件提醒或自动化过程。