【发布时间】:2015-04-07 22:20:58
【问题描述】:
如何通过 PHP 使用 Gmail API 获取所有收件箱邮件?我只能获取消息 ID,除此之外什么都没有。我需要获取主题、发件人和消息文本。
$list = $gmail->users_messages->listUsersMessages('me',['maxResults' => 10000, 'q' => 'category:primary']);
$messageList = $list->getMessages();
$client->setUseBatch(true);
$batch = new Google_Http_Batch($client);
foreach($messageList as $mlist){
$batch->add($gmail->users_messages->get('me',$mlist->id, ['format' => 'raw']),$mlist->id);
}
$batchMessages = $batch->execute();
$inboxMessage = [];
foreach($batchMessages as $dMessage){
$messageId = $dMessage->id;
$messageSnippet = $dMessage->snippet;
$dcMessage = base64url_decode($dMessage->getRaw());
$params['include_bodies'] = true;
$params['decode_bodies'] = true;
$params['decode_headers'] = true;
$mimeDecode = new Mail_mimeDecode($dcMessage);
$mimeSubject = $mimeDecode->decode($params)->headers['subject'];
$inboxMessage[] = [
'messageId' => $messageId,
'messageSubject' => $messageSubject
];
}
【问题讨论】:
-
我认为您必须使用消息的 id 调用 message.get 才能真正获取该信息。调用 get 方法时,信息将包含在参数 payload.headers[] 中,如下所述:developers.google.com/gmail/api/v1/reference/users/messages