我在获取发件人的电子邮件地址时遇到问题,
$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仍可以通过任何方式为我提供准确的发件人电子邮件地址吗?
有一个类似的答案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));
}
}
答案 0 :(得分:0)
var email = '';
var messageFrom = _.where(message.payload.headers, {name: 'From'})[0].value;
if(messageFrom.includes('<')) {
var fromObj = messageFrom.split('<');
email = fromObj[1];
fromObj = email.split('>');
email = fromObj[0];
}
return email;