从gmail-api获取发件人电子邮件

los*_*ary 5 gmail-api

我正在使用gmail-api并且无法收到发件人的电子邮件.我在谈论电子邮件的"完整"格式.我认为发件人的电子邮件是使用gmail的web界面实际写在"From"字段中的电子邮件.这个全格式的报头通常包括的东西像"X-原件,验证结果",从平时我可以检索smtp.mail值是发件人的电子邮件,但有些情况下这头不能被发现的其他电子邮件.

到目前为止这是我的代码:

if ("X-Original-Authentication-Results" == $header["name"]) {
        $value = $header["value"];
        preg_match("/smtp.mail=(.*)/", $value, $emailFound);
        $parsedEmail = $emailFound[1];
}
Run Code Online (Sandbox Code Playgroud)

这是一些标题的典型格式:

[headers] => Array
                    (
                        [0] => Array
                            (
                                [name] => Delivered-To
                                [value] => randomemail@gmail.com
                            )

                        [1] => Array
                            (
                                [name] => Received
                                [value] => ................
                            )

                        [2] => Array
                            (
                                [name] => X-Received
                                [value] => ................
                            )

                        [3] => Array
                            (
                                [name] => Return-Path
                                [value] => 
                            )

                        [4] => Array
                            (
                                [name] => Received
                                [value] => ................
                            )

                        [5] => Array
                            (
                                [name] => Received-SPF
                                [value] => ................
                            )

                        [6] => Array
                            (
                                [name] => Authentication-Results
                                [value] => ................
                            )
........
Run Code Online (Sandbox Code Playgroud)

那么有没有一种可靠的方法来获取发件人的正确电子邮件?先感谢您!

Eri*_*c D 6

循环浏览headers []数组,并查找带有'name'=“ From”的数组(或您感兴趣的任何标题名称)。请注意,可能有多个具有该名称的标头。通常会存在一些标准标头(“收件人”,“发件人”,“主题”),但我不认为这是RFC规定的。

  • 谢谢GmailGuy ....不幸的是,您以这种形式建议的标头是:[36] =>数组([name] => From [value] => Eva M),但实际上我正在查找发件人的电子邮件,而不是他的名字。知道在哪里可以找到吗? (2认同)

小智 6

知道这个问题是从一段时间以来,但我最近遇到了这个问题,并没有真正找到任何在线解决方案 - 所以我想我会分享我的发现.

基本上将它包装在htmlentities()中就可以了 - 但你必须直接访问该部分; 因此:-

$part = $message->payload['modelData']['headers'][0]['value']; 
echo htmlentities($part);
Run Code Online (Sandbox Code Playgroud)

似乎API正在删除值,因为当您对有效内容执行var_dump时,字符串值实际上是可见的.

 ["name"]=> string(11) "Return-Path" ["value"]=> string(21) ""
Run Code Online (Sandbox Code Playgroud)

这也适用于FROM部分.只是认为这将是一种更容易展示它的方法.:)