PHP Regex电子邮件解析器仅适用于从Live / Hotmail发送的邮件

时间:2014-10-21 20:20:39

标签: php regex email

我有一个脚本,它使用以下正则表达式来解析发送到服务器的电子邮件

$prefixes = ['/^From:(.*)/', '/^To:(.*)/', '/^Subject:(.*)/'];

while (!feof($email))
{
    while ($line = fgets($email))
    {
        foreach ($prefixes as $prefix)
        {
            if (preg_match($prefix, $line, $matches))
            {
                $data[] = trim($matches[1]);
            }
        }
    }
}

它应找到包含From:To:Subject:的所有行,然后将值插入数据库。

但是,这仅适用于Microsoft发送的电子邮件,并且不适用于Gmail。

我修改了脚本以将原始输入记录到文件中,来自Microsoft和Gmail的电子邮件具有相同的From:To:Subject:行,因此我可以&# 39;弄清楚为什么它没有正确存储值。

1 个答案:

答案 0 :(得分:0)

试试这个

list($headers, $message) = explode("\n\n", $email);

$header = imap_rfc822_parse_headers($headers);

// You can now access
$header->from;
$header->to;
$header->subject;