2015-02-07 112 views
6

如何使用Gmail使用PHP API獲取所有收件箱郵件?我只能得到消息ID,除此之外沒有任何東西。我需要獲取主題,發件人和消息文本。使用PHP獲取使用Gmail API的所有收件箱郵件

$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 
     ]; 
    } 
+0

我想你必須調用帶有消息ID的message.get才能真正獲得該信息。當調用get方法時,信息將包含在參數payload.headers []中,如下所述:https://developers.google.com/gmail/api/v1/reference/users/messages – Gerardo 2015-02-09 19:25:33

回答

5

這就是我做到的。

$list = $gmail->users_messages->listUsersMessages('me',['maxResults' => 10, 'q' => $search]); 

    $messageList = $list->getMessages(); 
    $inboxMessage = []; 

    foreach($messageList as $mlist){ 

     $optParamsGet2['format'] = 'full'; 
     $single_message = $gmail->users_messages->get('me',$mlist->id, $optParamsGet2); 

     $message_id = $mlist->id; 
     $headers = $single_message->getPayload()->getHeaders(); 
     $snippet = $single_message->getSnippet(); 

     foreach($headers as $single) { 

      if ($single->getName() == 'Subject') { 

       $message_subject = $single->getValue(); 

      } 

      else if ($single->getName() == 'Date') { 

       $message_date = $single->getValue(); 
       $message_date = date('M jS Y h:i A', strtotime($message_date)); 
      } 

      else if ($single->getName() == 'From') { 

       $message_sender = $single->getValue(); 
       $message_sender = str_replace('"', '', $message_sender); 
      } 
     } 


     $inboxMessage[] = [ 
      'messageId' => $message_id, 
      'messageSnippet' => $snippet, 
      'messageSubject' => $message_subject, 
      'messageDate' => $message_date, 
      'messageSender' => $message_sender 
     ]; 

    } 
+0

您好shimi,可以發送給我這是一個完整的功能?我非常需要它。這是我的電子郵件地址:[email protected] – Samphors 2015-06-23 08:02:48

+0

你能與大家分享全功能嗎? – boris 2016-04-13 02:00:41

相關問題