阅读电子邮件并使用PHP将数据保存到数据库

时间:2013-06-12 13:09:08

标签: php database email

我有一个要求,根据我需要阅读邮件(将采用指定的格式)。电子邮件基本上采用的格式包括一些字段信息,如:

Name: xyz
Zip: 33402

现在我们需要做的是在“名称”列中保存“名称”,在数据库表的“zip”列中保存“Zip”。

我可以通过PHP脚本通过IMAP阅读邮件,并可以获取“BODY”,但我需要帮助才能找到方法以便我可以阅读这些字段。

请分享您的任何方式/选项。

1 个答案:

答案 0 :(得分:1)

如果问题确实只是解析,在这种情况下我会推荐简单的正则表达式。

然而,我建议使用命名模式,所以你不要混淆索引和maby有错误的匹配。

这是一个简单的例子:

$str = <<<body
Name: xyz
Zip: 33402
body;

if(preg_match('/(?P<name>\w+): (?P<zip>\d+)/', $str, $matches)) {
    print_r($matches);

    // db beeing your database connector, for example pdo

    $sql = "INSERT INTO mytable (name,zip) VALUES(".$db->quote($matches['name']).",".$db->quote($matches['zip']);

    echo $sql;
} else {
    //mail does not correspond to pattern!
}

如果邮件越来越长,请多次使用preg_match。可能对于要分别解析的每个字段。因为如果你有更多的字段,写一个巨大的正则表达是很难维护的。 还必须考虑字段的顺序。

然而,这一切都不是很强大。特别是必须考虑这些领域的内容。

如果某人的名字中包含换行符或逗号,该怎么办?

我真的很想在考虑之前考虑将邮件正文放到更好的格式中。一个涉及逃避的人。例如CSV或(我最喜欢的)JSON。