Php 使用正则表达式从原始电子邮件中提取正文
我认为你最好一次一次地写一封电子邮件,因为在电子邮件的形成过程中,换行符更重要 你的规则是:Php 使用正则表达式从原始电子邮件中提取正文,php,regex,email,Php,Regex,Email,我认为你最好一次一次地写一封电子邮件,因为在电子邮件的形成过程中,换行符更重要 你的规则是: 如果您得到了一个双换行符,那么主体是开始-纯文本类型(因为没有标题来指示哪个) 否则,继续操作直到获得“boundary=”位,然后记录边界并跳入“查找边界”模式 然后,当您找到边界时,跳转到“查找内容类型或双新行”模式,并查找内容类型(和注释内容类型)或双新行(标题已完成,正文在下一个边界之前) 在阅读邮件正文时,您将返回“查找边界”模式以重复该过程 我记得很久以前的事情了——所以下面的内容可能不
- 如果您得到了一个双换行符,那么主体是开始-纯文本类型(因为没有标题来指示哪个)
- 否则,继续操作直到获得“boundary=”位,然后记录边界并跳入“查找边界”模式
- 然后,当您找到边界时,跳转到“查找内容类型或双新行”模式,并查找内容类型(和注释内容类型)或双新行(标题已完成,正文在下一个边界之前)
- 在阅读邮件正文时,您将返回“查找边界”模式以重复该过程
编辑:问题中询问的其他信息。一封电子邮件可以包含用户希望编码的任意多个“正文”。您可以有一个普通的、HTML的、UTF编码的版本、RTF版本,甚至是摩尔斯电码版本(如果客户知道如何处理“内容类型摩尔斯电码”!)。有时候你不会得到纯文本,而只得到HTML版本(淘气的用户)。有时HTML实际上没有内容类型声明(根据客户机的不同,可能显示为HTML,也可能不显示为HTML)。边界也会拆分附件。Rich test是Outlook中的一个gotcha(不过,公平地说,它通常被转换为HTML)。所以不,在0和X物体之间 我认为你最好一次一封地写电子邮件,因为在电子邮件的形成过程中,分线更为重要 你的规则是:
- 如果您得到了一个双换行符,那么主体是开始-纯文本类型(因为没有标题来指示哪个)
- 否则,继续操作直到获得“boundary=”位,然后记录边界并跳入“查找边界”模式
- 然后,当您找到边界时,跳转到“查找内容类型或双新行”模式,并查找内容类型(和注释内容类型)或双新行(标题已完成,正文在下一个边界之前)
- 在阅读邮件正文时,您将返回“查找边界”模式以重复该过程
编辑:问题中询问的其他信息。一封电子邮件可以包含用户希望编码的任意多个“正文”。您可以有一个普通的、HTML的、UTF编码的版本、RTF版本,甚至是摩尔斯电码版本(如果客户知道如何处理“内容类型摩尔斯电码”!)。有时候你不会得到纯文本,而只得到HTML版本(淘气的用户)。有时HTML实际上没有内容类型声明(根据客户机的不同,可能显示为HTML,也可能不显示为HTML)。边界也会拆分附件。Rich test是Outlook中的一个gotcha(不过,公平地说,它通常被转换为HTML)。所以不,在0和X物体之间 有没有理由不使用imap_fetchbody()之类的工具来获取身体数据?@glenatron email piping?我正在研究如何扩展我的应用程序。你为什么不使用imap_fetchbody()来获取身体数据?@glenatron email piping?我正在做一项关于扩展我的应用程序的研究“我认为你最好一次浏览一次电子邮件行,因为在电子邮件的形成过程中,换行符更为重要。”-对于我试图找到发件人的案例:-我用正则表达式考虑过了。。。一行一行似乎更安全。“我认为你最好一次通过电子邮件,因为在电子邮件形成过程中,换行符更为重要。”-对于我试图找到发件人的案例:-我对RegEx考虑得太多了。。。一行一行似乎更安全。
--047d7b33d6decd251504bfe78895
Content-Type: multipart/alternative; boundary=047d7b33d6decd250d04bfe78893
--047d7b33d6decd250d04bfe78893
Content-Type: text/plain; charset=UTF-8
twest
ini sebuah proiduct abru
awdawdawdawdwa
aw
awdawdaw
--047d7b33d6decd250d04bfe78893
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div class=3D"gmail_quote">twest=C2=A0<div><br></div><div>ini sebuah proidu=
ct abru</div><div><br></div><div>awdawdawdawdwa</div><div><br></div><div>aw=
</div><div>awdawdaw</div>
</div><br>
--047d7b33d6decd250d04bfe78893--
$parts = explode('--', $this->rawemail);
$this->headers = imap_rfc822_parse_headers($this->rawemail);
# var_dump($parts);
# Process the parts
foreach ($parts as $part)
{
# Get Content text/plain
if (preg_match('/Content-Type: text\/plain;/', $part))
{
$body_parts = preg_split('/\n\n/', $part);
# If Above the newline (Headers)
if ($body_parts[0])
{
# var_dump($body_parts[0]);
}
# If Below the newline (Data)
if ($body_parts[1])
{
var_dump($body_parts[1]);
}
}
# Get Content text/html
if (preg_match('/Content-Type: text\/html;/', $part))
{
$body_parts = preg_split('/\n\n/', $part);
# If Above the newline (Headers)
if ($body_parts[0])
{
# var_dump($body_parts[0]);
}
# If Below the newline (Data)
if ($body_parts[1])
{
var_dump($body_parts[1]);
}
}