【问题标题】:Gmail api response headers - getting information contained in angle brackets (php library)Gmail api 响应标头 - 获取尖括号中包含的信息(php 库)
【发布时间】:2014-12-14 23:18:21
【问题描述】:

我正在使用 gmail api,当我尝试从特定消息中获取“发件人”字段时,我得到了名称部分,但没有得到地址。以下是在 oauth2 操场上运行的查询:

获取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@example.org>"
            }
        ]
    },
    "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);

现在,对返回的 $message 中的标题执行 var_dump 不会在尖括号内显示电子邮件地址。我如何得到这个?

【问题讨论】:

  • 如果您将 echo 直接输入到 HTML 文档中,您将希望通过 htmlspecialchars() 将其通过管道传输,例如 echo htmlspecialchars($name_value)

标签: php gmail-api


【解决方案1】:

该值绝对应该存在于 from 标头中。我同意 phil 的观点,我认为您的“”很可能因为您打印到 html 输出源而被隐藏/删除。 :)

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,我只是使用正则表达式从 "First Last &lt;email@example.org&gt;" 据我所见,标题中没有任何地方只有电子邮件地址

    【讨论】:

      猜你喜欢
      • 2020-10-22
      • 2011-06-15
      • 1970-01-01
      • 2021-09-11
      • 2016-11-29
      • 1970-01-01
      • 2020-05-16
      • 1970-01-01
      相关资源
      最近更新 更多