Итак, я использую Pub / Sub subsrition и использую Push в URL-адресе конечной точки для чтения электронной почты из gmail.
Он отлично работает для коротких электронных писем, но один раз, когда электронное письмо содержит более майбер200 символов, он читает только первые 100 символов.
Вот снимок экрана на моей консоли Google API
и вот код в файле получателя
$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));
Есть ли строка кода, которую мне нужно ввести, чтобы прочитать полные электронные письма?
Согласно документация, Вы можете передать необязательный параметр для формата:
Допустимые значения:
«полный»: возвращает полные данные сообщения электронной почты с содержимым тела, проанализированным в поле полезной нагрузки; необработанное поле не используется. (дефолт)
«метаданные»: возвращает только идентификатор сообщения электронной почты, метки и заголовки сообщения.
«минимальный»: возвращает только идентификатор сообщения электронной почты и метки; не возвращает заголовки электронной почты, текст или полезную нагрузку.
«raw»: возвращает полные данные сообщения электронной почты с содержимым тела в необработанном поле в виде строки в кодировке base64url; поле полезной нагрузки не используется.
Попробуйте изменить конечную точку, чтобы включить format
параметр:
$id = $allmessage[$i]->id;
$endpoint = "https://www.googleapis.com/gmail/v1/users/me/messages/$id?format=full";
$ch = curl_init($endpoint);
Других решений пока нет …