Gmail API无法读取完整的电子邮件

时间:2019-01-07 19:18:23

标签: php codeigniter gmail-api publish-subscribe

好,所以我正在使用“发布/订阅”订阅,并使用“推入端点URL”来读取来自gmail的电子邮件。

它非常适合短电子邮件,但是一旦电子邮件超过mayber200个字符,它只能读取前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 :(得分:0)

根据documentation,您可以为格式传递一个可选参数:

  

可接受的值为:

     

“完整”:返回完整的电子邮件数据,其有效内容字段中已解析正文内容;未使用原始字段。 (默认)

     

“元数据”:仅返回电子邮件ID,标签和电子邮件标题。

     

“最小”:仅返回电子邮件ID和标签;不返回电子邮件标题,正文或有效载荷。

     

“原始”:返回完整的电子邮件消息数据,其中原始内容中的正文内容为base64url编码的字符串;有效负载字段未使用。

尝试更改端点以包括format参数:

$id = $allmessage[$i]->id;
$endpoint = "https://www.googleapis.com/gmail/v1/users/me/messages/$id?format=full";
$ch = curl_init($endpoint);