У меня проблемы с получением адреса электронной почты отправителя,
$single_message = $gmail->users_messages->get('me', $msg_id);
"from" обычно выдает имя отправителя
Чтобы получить адрес электронной почты, у меня есть этот код
if($partes->getName() == 'Authentication-Results')
{
$outh_res = $partes->getValue();
if(strpos($outh_res, 'smtp.mailfrom=') !== false)
{
$bits = explode('smtp.mailfrom=',$outh_res);
$mail = $bits[1];
if(strpos($mail, ';') !== false)
{
$bits = explode(';',$mail);
$mail = str_replace('"', '',$bits[0]);
}
}
}
Это всегда дает мне электронное письмо, но когда отправитель находится позади почтового шимпанзе (или его собственных серверов (postfix)), например: bounces+2063633-785c-info=myemail.com@sg1.senderemail.com
В лучшем случае я получаю @ sendermail.com (от самого gmail я знаю его info@sendermail.com), поэтому он бесполезен
В некоторых случаях
if($partes->getName() == 'Reply-To')
{
$other_mail = str_replace('"', '',$partes->getValue());
}
Дает мне полезную электронную почту, другие только имя отправителя
как предложено в github php gmail api выпуск # 521 и других местах
$only_header = $gmail->users_messages->get('me',$msg_id, ['format' => 'metadata', 'metadataHeaders' => ['To','X-Original-To','X-Original-From','From','Reply-To','Subject']]);
Это дает точно такую же информацию.
Есть ли способ, которым API дает мне именно адрес электронной почты отправителя, даже если он находится за почтовым шимпанзе или другим сторонним отправителем?
Есть аналогичный ответ Получите электронную почту отправителя от gmail-api , я уже зациклил заголовки и попробовал ответ zingzinco.
Редактировать: благодаря Джои Тавадроус;
Php код:
if($partes->getName() == 'From')
{
$raw_from = $partes->getValue();
if(strpos($raw_from, '<') !== false)
{
$bit = explode('<',$raw_from);
$bit2 = explode('>',$bit[1]);
$final_email = $bit2[0];
$sender_name = str_replace('"', '',$bit[0]);
}
else
{
$sender_name = limpiarm(str_replace('"', '',$raw_from));
}
}