在php中解析原始邮件

我正在寻找良好/工作/简单的使用php代码解析原始电子邮件部分。

我写了几个强力解决方案,但每次,一个小的改变/标题/空间/一些东西出现,我的整个解析器失败,项目崩溃。

在我指向PEAR / PECL之前,我需要实际的代码。我的主机有一些螺丝配置或东西,我似乎永远不会得到.so的建立权利。如果我确实获得了.so,路径/环境/ php.ini中的一些区别并不总是使它可用(apache vs cron vs cli)。

哦,最后一件事,我正在解析原始的电子邮件文本,而不是POP3,而不是IMAP。它通过.qmail电子邮件重定向被插入php脚本。

我并不期望SOF为我写信,我正在寻找一些技巧/起点,这样做是对的。这是我已经解决的那些“轮”问题之一。

你希望最终结局是什么?身体,主体,发件人,附件?您应该花费一些时间与RFC2822了解邮件的格式,但这是完整邮件的最简单的规则:

HEADERS\n
\n
BODY

也就是说,第一个空行(双换行)是HEADERS和BODY之间的分隔符。 HEADER看起来像这样:

HSTRING:HTEXT

HSTRING始终从一行开始,不包含任何空格或冒号。 HTEXT可以包含各种文本,包括换行符,只要换行符后跟空格。

“BODY”实际上只是第一个双重换行符之后的任何数据。 (如果您通过SMTP发送邮件,但是通过不需要担心的管道进行处理,则有不同的规则)。

所以,在一个非常简单的,大约在1982 RFC822条款中,一封电子邮件看起来像这样:

HEADER: HEADER TEXT
HEADER: MORE HEADER TEXT
  INCLUDING A LINE CONTINUATION
HEADER: LAST HEADER

THIS IS ANY
ARBITRARY DATA
(FOR THE MOST PART)

大多数现代电子邮件比那个更复杂。标题可以编码为charsets或RFC2047 mime字,或一吨的其他东西,我现在没有想到。如果你希望他们有意义的话,这些机构真的很难转载自己的代码。几乎所有由MUA生成的电子邮件将被编码为MIME。这可能是uuencoded文本,它可能是html,它可能是一个uuencoded的excel电子表格。

我希望这有助于提供一个了解电子邮件的一些非常元素的框架。如果您提供更多关于您尝试使用数据的背景知识(或其他人)可能提供更好的方向。

http://stackoverflow.com/questions/12896/parsing-raw-email-in-php

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:在php中解析原始邮件