gmail api海峡转发方式获取发件人电子邮件

时间:2018-11-15 20:17:35

标签: php gmail-api

我在获取发件人的电子邮件地址时遇到问题,

$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));
    }
}

1 个答案:

答案 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;
相关问题