Gmail API не читает полную электронную почту - PullRequest
0 голосов
/ 07 января 2019

Хорошо, поэтому я использую Pub / Sub subsrition и использую Push в URL-адресе конечной точки для чтения электронной почты из gmail.

Он отлично работает для коротких электронных писем, но один раз, когда электронное письмо превышает майбер200, он читает только первые 100 символов или около того.

Вот снимок экрана на моей консоли Google API

enter image description here

и вот код в файле получателя

$ch = curl_init('https://www.googleapis.com/gmail/v1/users/me/messages?labelIds=Label_56&maxResults=5');

    curl_setopt_array($ch, array(
        CURLOPT_POST => false,
        CURLOPT_RETURNTRANSFER => TRUE,
        CURLOPT_HTTPHEADER => array(
            'Authorization: Bearer '. $tokenval,
             'Content-Type: application/json', 
        ),
    ));

    // execute request and get response
   $result = curl_exec($ch);


   $allmessages = json_decode($result);
   $allmessage = $allmessages->messages; 


   for($i=0;$i<count( $allmessage);$i++)
   {
     $checkoldmsgid =  $this->Customer_m->getCount('messages',array('massageid'=>$allmessage[$i]->id ));

     if( $checkoldmsgid ==0)
     {
         $ch = curl_init('https://www.googleapis.com/gmail/v1/users/me/messages/'.$allmessage[$i]->id);

                curl_setopt_array($ch, array(
                    CURLOPT_POST => false,
                    CURLOPT_RETURNTRANSFER => TRUE,
                    CURLOPT_HTTPHEADER => array(
                        'Authorization: Bearer '. $tokenval,
                         'Content-Type: application/json'
                    ),
                ));

             // execute request and get response
            $resultm = curl_exec($ch);
            $msgval = json_decode($resultm);

            $sendernum =explode('@',$msgval->payload->headers[19]->value);
            $recivernum =explode('@',$msgval->payload->headers[0]->value);
            $createdat =   date('Y-m-d H:i:s',strtotime($msgval->payload->headers[18]->value));

Есть ли строка кода, которую мне нужно ввести, чтобы прочитать полные электронные письма?

1 Ответ

0 голосов
/ 07 января 2019

Согласно документации , вы можете передать необязательный параметр для формата:

Допустимые значения:

"full": возвращает полные данные сообщения электронной почты с содержимым тела, проанализированным в поле полезной нагрузки; необработанное поле не используется. (По умолчанию)

"метаданные": возвращает только идентификатор сообщения электронной почты, метки и заголовки сообщения электронной почты.

«минимальный»: возвращает только идентификатор сообщения электронной почты и метки; не возвращает заголовки сообщений, текст или полезные данные.

«raw»: возвращает полные данные сообщения электронной почты с содержимым тела в необработанном поле в виде строки в кодировке base64url; поле полезной нагрузки не используется.

Попробуйте изменить конечную точку, включив в нее параметр format:

$id = $allmessage[$i]->id;
$endpoint = "https://www.googleapis.com/gmail/v1/users/me/messages/$id?format=full";
$ch = curl_init($endpoint);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...