2015-02-07 11 views
6

Wie bekomme ich alle Posteingang Nachrichten mit Gmail API mit PHP? Ich kann nur eine Nachrichten-ID bekommen, und nichts darüber hinaus. Ich muss Betreff, Absender und Nachrichtentext abrufen.Erhalten Sie alle Posteingang Nachrichten mit Gmail API mit PHP

$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

Ich denke, Sie müssen die Nachricht mit der ID der Nachricht aufrufen, um diese Informationen tatsächlich zu erhalten. Beim Aufruf der Methode get werden die Informationen im Parameter payload.headers [] wie hier beschrieben: https://developers.google.com/gmail/api/v1/reference/users/messages – Gerardo

Antwort

5

So habe ich es gemacht.

$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

Hallo shimi, könnte mir senden eine volle Funktion davon? Ich brauche es so sehr. Dies ist meine E-Mail-Adresse: [email protected] – Samphors

+0

Kannst du bitte die volle Funktion mit allen teilen? – boris

Verwandte Themen