【发布时间】:2019-04-19 00:25:56
【问题描述】:
我在获取发件人的电子邮件地址时遇到问题,
$single_message = $gmail->users_messages->get('me', $msg_id);
“发件人”通常产生发件人姓名
要获取电子邮件地址,我有此代码
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]);
}
}
}
这总是给我一封电子邮件,但是当发件人在邮件黑猩猩(或他们自己的服务器(后缀))后面时,例如: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 issue # 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 有没有什么方法可以准确地给我发件人的电子邮件地址,即使它在邮件黑猩猩或其他第 3 方发件人后面?
有一个类似的答案Get sender email from gmail-api,我已经循环了标题并尝试了zingzinco的答案。
编辑:感谢 Joey Tawadrous;
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));
}
}
【问题讨论】: