8

gmail-api を使用していますが、送信者のメールを取得できません。私は電子メールの「完全な」形式について話しています。送信者のメールは、gmail の Web インターフェイスを使用して実際に「差出人」フィールドに書き込まれたものと見なします。この完全な形式のヘッダーには通常、「X-Original-Authentication-Results」のようなものが含まれており、通常はそこから送信者の電子メールである smtp.mail 値を取得できますが、このヘッダーが見つからない他の電子メールがあります。

これまでの私のコードは次のとおりです。

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

以下は、いくつかのヘッダーの典型的な形式です。

[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] => ................
                            )
........

送信者の正しい電子メールを取得する確実な方法はありますか? 前もって感謝します!

4

4 に答える 4

7

この質問はしばらく前のものであることを知っていますが、最近この問題に遭遇し、オンラインで解決策を実際に見つけることができなかったので、調査結果を共有したいと思いました.

基本的に htmlentities() でラップするとうまくいきますが、その部分に直接アクセスする必要があります。そのような:-

$part = $message->payload['modelData']['headers'][0]['value']; 
echo htmlentities($part);

ペイロードで var_dump を実行すると、文字列値が実際に表示されるため、API が値を削除しているようです。

 ["name"]=> string(11) "Return-Path" ["value"]=> string(21) ""

これは FROM 部分でも機能します。これは、それを実証するためのはるかに簡単な方法だと思いました。:)

于 2015-06-13T16:08:49.197 に答える