我有一个脚本,它使用以下正则表达式来解析发送到服务器的电子邮件
$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;弄清楚为什么它没有正确存储值。
答案 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;