【问题标题】:Gmail API Not Reading Full emailGmail API 未阅读完整的电子邮件
【发布时间】:2019-06-02 11:27:26
【问题描述】:

好的,所以我正在使用 Pub/Sub 订阅并使用推送到端点 URL 来读取来自 gmail 的电子邮件。

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

是否需要输入一行代码才能阅读完整的电子邮件?

【问题讨论】:

    标签: php codeigniter gmail-api publish-subscribe


    【解决方案1】:

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

    可接受的值为:

    "full":返回完整的电子邮件消息数据,正文内容在有效负载字段中解析;未使用原始字段。 (默认)

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

    “minimal”:仅返回电子邮件 ID 和标签;不返回电子邮件标头、正文或有效负载。

    “raw”:以 base64url 编码字符串的形式返回原始字段中包含正文内容的完整电子邮件数据;未使用有效负载字段。

    尝试更改您的端点以包含format 参数:

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

    【讨论】:

    • 我尝试了完整和原始但仍然只得到 194 个字符
    • 任何其他想法:)
    猜你喜欢
    • 2018-05-11
    • 2015-06-04
    • 2016-03-03
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    • 2020-12-19
    • 2019-04-24
    • 1970-01-01
    相关资源
    最近更新 更多