Я использую API Gmail, и когда я пытаюсь получить поле «От» из определенного сообщения, я получаю часть имени, но не адрес. Вот запрос, который работает на детской площадке oauth2:
Это выводит:
{
"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 для заголовков в возвращенном сообщении $ не показывает адрес электронной почты в угловой скобке. Как мне это получить?
Значение обязательно должно быть в заголовке from. Я согласен с Филом, я думаю, что это вероятно ваш<«и»> скрываются / удаляются, так как вы печатаете в html-источнике вывода. 🙂
У меня была та же проблема, я просто использовал регулярные выражения, чтобы получить письмо от
"First Last <[email protected]>"
насколько я видел, нигде не было заголовков, которые имели только адрес электронной почты