从IMAP消息中提取链接

时间:2013-06-12 21:30:29

标签: php email anchor imap extract

我需要从IMAP消息中提取URL,到目前为止我已经能够以纯文本而不是链接提取消息,我真的可以在这里使用一些帮助。这是我到目前为止所得到的

$section    = empty( $attachments ) ? 1 : 1.2;  
$text       = imap_fetchbody($connection, $msgno, $section );

echo $text."<hr/>";

我尝试将部分编号从1:1.1更改为1:1.2,但它没有帮助。

我需要将邮件提取为html,因此它包含链接,我需要更改哪些内容才能获取链接?

1 个答案:

答案 0 :(得分:0)

上面代码中的一些错误:

  • 使用1.2作为浮点数而不是字符串。这是一个字符串,只是纯粹的运气,你的1.2没有被转换为1.2000000001
  • 如果邮件附有多个身体部位,请使用硬编码的部件号 - 请阅读RFC 3501, p. 56中的说明,详细了解这些身体部位是什么,它们如何工作以及如何找出哪些是相关的你
  • 不执行Content-Transfer-Encoding的任何解码或处理字符集转换。您显然对邮件的文本部分感兴趣,这些部分可以使用quoted-printablebase64等多种编码方式进行解码。如果你想安全地播放它(你应该,它已经是2013年,网址中有趣的字符,而不是IDN),也会从它们的字符集转换为unicode,然后才匹配内容。
  • 您应该检查至少所有顶级正文部分的MIME类型,这样您就不会尝试检测附加图像中的“链接”或未解码的,zip文件的二进制表示等。