2012-07-24 174 views
3

我试图通过PHP imap functions解析电子邮件时遇到问题。我想提取正文的文本,但没有HTML链接(如mailto:xxxx)或编码问题。我认为我已经尝试了(几乎,我猜)一切。但与我接近所需的最终结果的唯一代码,与未来:imap电子邮件解析的编码

$bodyText = imap_fetchbody($inbox,$email_number,1.2); 

if(!strlen($bodyText)>0) 
{ 
    $bodyText = imap_fetchbody($inbox,$email_number,1); 
} 

var_dump($bodyText); 

的一点是,这个我收到的问题与最终的编码(我认为这就是问题所在)。因此,后续代码var_dump输出是一样的东西:

> From: SomeOne <someone=40domain.com> 
> To: Someone Else <someoneelse=40domain.com> 
> =Date: lunes 23 de julio de 2012 13:04:43 
> Subject: =46wd: =46W: URGE=21=21=21=21 Ley de Reforma del Congreso de 20=11 
> =20 
> Some text here, blah, blah, blah 
> =20 
> ---------- =46orwarded message ---------- 
> From: Whatever <whatever=40domain.com (mailto:whatever=40domain.com)> 
> Date: 23 de julio de 2012 12:53 
> Subject: =46wd: =46W: URGE=21=21=21=21 Ley de Reforma del Congreso de 20=11 
> To: Someone <someone=40domain.com (mailto:someone=40domain=.com)> 
> =20 
> =20 
> Some stuff=21=21 
> =20 
> ---------- =46orwarded message ---------- 
> =46rom: samuel l jackson <sanvuco=40domain.com (mailto:sanvuco=40domain.com)> 
> Date: 2012/7/23 
> Subject: =46W: URGE=21=21=21=21 Ley de Reforma del Congreso de 2011 
> To: =22...Scary Monster=C2=B7=C2=B7=C2=B7 =C3=B2=5F=5F=C3=B3=22 <eowyn2= 
6=40domain.com (mailto:eowyn26=40domain.com 

我的意思是,有出现不良=40,而不是@mailto:[email protected]

感谢您

回答

2

贯穿

quoted_printable_decode($bodyText); 
身体串

,你会得到你要找的可打印的,未编码的字符串。然后,您可以继续使用一些正则表达式来摆脱邮件并执行任何其他解析。这些任务的适当功能是:

preg_replace(); 

http://www.php.net/manual/en/function.preg-replace.php

+0

现在正在工作。非常感谢您的帮助 ;) – blacksoul 2012-07-24 14:40:16