2015-02-07 14 views
6

Come posso ottenere tutti i messaggi di posta in arrivo utilizzando l'API di Gmail con PHP? Posso solo ottenere l'ID del messaggio e niente oltre. Devo recuperare Subject, Sender e Message Text.Ottieni tutti i messaggi di posta in arrivo con API Gmail utilizzando 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

Penso che devi chiamare il messaggio.get con l'id del messaggio per ottenere effettivamente quell'informazione. Quando si chiama il metodo get le informazioni saranno contenute nel parametro payload.headers [] come descritto qui: https://developers.google.com/gmail/api/v1/reference/users/messages – Gerardo

risposta

5

Ecco come l'ho fatto.

$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

Hi shimi, potrebbe inviarmi una piena funzione di questo? Ne ho tanto bisogno. questa è la mia email: [email protected] – Samphors

+0

Puoi condividere la funzione completa con tutti per favore? – boris

Problemi correlati