php - imap 电子邮件解析的编码

标签 php parsing character-encoding imap gmail-imap

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

$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:xxxx@domain.com block

谢谢

最佳答案

通过运行主体字符串

quoted_printable_decode($bodyText);

你会得到你正在寻找的可打印的、未编码的字符串。然后您可以继续使用一些正则表达式来摆脱 mailto 并进行任何其他您喜欢的解析。适合这些任务的函数是:

preg_replace();

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

关于php - imap 电子邮件解析的编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11632265/

相关文章:

PHP传递mysql查询结果显示在另一个页面

PHP - 插入多个表,每个表具有相同的字段

java - 在java 1.4环境中解析XML

jquery - 通过 jquery 获取 xml 中特定子项的子项值

php - 将图像复制到另一个文件夹并重命名

javascript - 为什么 netsniff.js 将 javascript 错误打印到输出中?

php - 撇号显示为�从Word Doc复制和粘贴文本时显示为菱形

c# - 无法设置编码类型的DecoderFallback属性

mysql - HTML - 来自数据库的英镑符号显示为?即使使用 charset=UTF-8

PHP/SQL 将 sql 结果分配给 session