Gmail api响应头-获取尖括号中包含的信息(php库)

Gmail api响应头-获取尖括号中包含的信息(php库),php,gmail-api,Php,Gmail Api,我使用的是gmail api,当我试图从特定消息中获取“发件人”字段时,我得到的是姓名部分,而不是地址。以下是在oauth2游乐场中工作的查询: 得到 它输出: { "payload": { "mimeType": "multipart/mixed", "headers": [ { "name": "From", "value": "First Last <ema

我使用的是gmail api,当我试图从特定消息中获取“发件人”字段时,我得到的是姓名部分,而不是地址。以下是在oauth2游乐场中工作的查询:

得到

它输出:

{
    "payload": {
        "mimeType": "multipart/mixed",
        "headers": [
            {
                "name": "From",
                "value": "First Last <email@example.org>"
            }
        ]
    },
    "sizeEstimate": 180758
}
{
“有效载荷”:{
“mimeType”:“多部分/混合”,
“标题”:[
{
“姓名”:“发件人”,
“值”:“第一个-最后一个”
}
]
},
“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);
函数getMessage($service,$userId,$messageId){ 试一试{ $optParamsGet=array(); $optParamsGet['format']='metadata'; $optParamsGet['metadataHeaders']='From'; $optParamsGet['fields']='payload,sizeEstimate'; $message=$service->users\u messages->get($userId,$messageId,$optParamsGet); 打印“ID为的邮件”。$Message->getId()。”已检索。
; 返回$message; }捕获(例外$e){ 打印“出现错误:”。$e->getMessage(); } } $message2=getMessage($service,$userId,$message\u id); 如果($message2->getPayload()){ $headers=$message2->getPayload()->getHeaders(); foreach($headers作为$header){ if('From'==$header->name){ $name\u value=$header->value; 回显$name_值。“
”; 数组\u push($sendernames,$name\u value); echo$header['value']。“
”; 打破 } } } 变量转储($headers);
现在,对返回的$message中的头进行var_转储不会在尖括号内显示电子邮件地址。如何获取该值?

该值肯定会出现在from标题中。我同意phil的观点,我认为您的“”可能会被隐藏/删除,因为您正在打印到html输出源。:)

我也有同样的问题,我只是用regex从
“最后一个”

据我所见,在标题中没有一个地方只有电子邮件地址

如果您要将值直接输入HTML文档,则需要通过管道将其传递到
htmlspecialchars()
,例如
echo htmlspecialchars($name\u value)