【问题标题】:gmail api strait forward way to get sender emailgmail api海峡转发方式获取发件人电子邮件
【发布时间】: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));
    }
}

【问题讨论】:

    标签: php gmail-api


    【解决方案1】:
    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;
    

    【讨论】:

    • 非常感谢! (虽然为什么 没有出现在打印或转储中?[php])
    猜你喜欢
    • 2014-09-07
    • 2021-04-27
    • 2020-03-25
    • 2020-09-04
    • 1970-01-01
    • 2018-08-25
    • 2016-01-08
    • 1970-01-01
    • 2021-09-11
    相关资源
    最近更新 更多