当前位置:  开发笔记 > 编程语言 > 正文

在php中解析原始电子邮件

如何解决《在php中解析原始电子邮件》经验,为你挑选了2个好方法。

我正在寻找好/工作/简单使用PHP代码将原始电子邮件解析为部分.

我已经编写了几个强力解决方案,但每次都会出现一个小的更改/标题/空格/一些东西,我的整个解析器都会失败并且项目会崩溃.

在我指出PEAR/PECL之前,我需要实际的代码.我的主机有一些棘手的配置或东西,我似乎永远不会得到.so的构建正确.如果我确实得到了.so,那么path/environment/php.ini中的一些区别并不总是让它可用(apache vs cron vs cli).

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

我不期待SOF为我写这篇文章,我正在寻找一些关于"正确"做的提示/起点.这是我知道已经解决的那些"轮子"问题之一.



1> jj33..:

你最终希望最终得到什么?身体,主体,发件人,附件?您应该花一些时间与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)

大多数现代电子邮件比这更复杂.标题可以编码为字符集或RFC2047 mime字,或者其他很多我现在没想到的东西.如果您希望它们有意义,那么这些天的机构真的很难推出自己的代码.几乎所有由MUA生成的电子邮件都将进行MIME编码.这可能是uuencoded文本,它可能是html,它可能是一个uuencoded excel电子表格.

我希望这有助于提供一个框架来理解一些非常基本的电子邮件桶.如果您提供更多有关您尝试处理数据的背景信息,我(或其他人)可能会提供更好的指导.



2> dan..:

尝试使用Plancake PHP电子邮件解析器:https: //github.com/plancake/official-library-php-email-parser

我用它来做我的项目.它工作得很好,它只是一个类,它是开源的.


可以确认Plancake是垃圾.似乎在处理从Outlook发送的电子邮件方面表现不佳.五年内没有更新.
推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有