我正在使用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)
那么有没有一种可靠的方法来获取发件人的正确电子邮件?先感谢您!
循环浏览headers []数组,并查找带有'name'=“ From”的数组(或您感兴趣的任何标题名称)。请注意,可能有多个具有该名称的标头。通常会存在一些标准标头(“收件人”,“发件人”,“主题”),但我不认为这是RFC规定的。
小智 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部分.只是认为这将是一种更容易展示它的方法.:)
| 归档时间: |
|
| 查看次数: |
6535 次 |
| 最近记录: |