2014-10-20 40 views
2

我使用gmail api,当我试图从特定消息中获取“From”字段时,我得到的是名称部分,但不是地址。下面是在的oauth2操场工程查询:Gmail api响应标题 - 获取尖括号中所包含的信息(php库)

GET https://www.googleapis.com/gmail/v1/users/me/messages/14jj4883c9e195a8?format=metadata&metadataHeaders=From&fields=payload%2CsizeEstimate

它输出:

{ 
    "payload": { 
     "mimeType": "multipart/mixed", 
     "headers": [ 
      { 
       "name": "From", 
       "value": "First Last <[email protected]>" 
      } 
     ] 
    }, 
    "sizeEstimate": 180758 
} 

实现在PHP中相同的查询:

function getMessage($service, $userId, $messageId) { 
    try { 
    $optParamsGet = array();  
    $optParamsGet['format'] = 'metadata'; 
    $optParamsGet['metadataHeaders'] = 'From'; 
    $optParamsGet['fields'] = 'payload,sizeEstimate'; 

    $message = $service->users_messages->get($userId, $messageId, $optParamsGet); 
    print 'Message with ID: ' . $message->getId() . ' retrieved.<br>'; 
    return $message; 
    } catch (Exception $e) { 
    print 'An error occurred: ' . $e->getMessage(); 
    } 
} 

$message2 = getMessage($service,$userId,$message_id); 

      if ($message2->getPayload()) { 
       $headers = $message2->getPayload()->getHeaders(); 
       foreach ($headers as $header) { 
        if ('From' == $header->name) { 
         $name_value = $header->value; 
         echo $name_value . "<br>"; 
         array_push($sendernames,$name_value); 
         echo $header['value']. "<br>"; 
         break; 
        } 
       } 
      } 
      var_dump($headers); 

而现在,做一个返回的$消息中头部的var_dump不显示尖括号内的电子邮件地址。我如何得到这个?

+0

头如果你'将值直接回显到一个HTML文档,你会想通过'htmlspecialchars()'来管它,例如'echo htmlspecialchars($ name_value)' – Phil 2014-10-20 02:39:55

+0

是的!谢谢。 – user3200528 2014-10-20 02:53:54

回答

0

值应该肯定在from头部。我同意phil的观点,我认为很可能你的“<”和“>”在你打印到html输出源时被隐藏/删除。 :)

0

我有同样的问题,我只是用正则表达式来从 "First Last <[email protected]>" 电子邮件据我看到有无处在刚刚的电子邮件地址