Php 解码$str=imap_fetchbody:$str==="&引用;但是print\r可以打印它

Php 解码$str=imap_fetchbody:$str==="&引用;但是print\r可以打印它,php,imap,Php,Imap,我已经转发了一封来自雷鸟的带有pdf附件的html邮件。 我收到multipart/mixed和multipart/alternative,其中包含html和txt纯文本,并且pdf base 64编码。多部分/备选方案为8位,字符集=UTF8 我尝试了php.net上imap:fetchstructure/fetchbody手册页面上的几乎所有建议。它们包括解码(至少对于编码=1、3、4)、应用imap_8bit、imap_qprint和imap_base64。手动查看txt/plain显示e

我已经转发了一封来自雷鸟的带有pdf附件的html邮件。 我收到multipart/mixed和multipart/alternative,其中包含html和txt纯文本,并且pdf base 64编码。多部分/备选方案为8位,字符集=UTF8

我尝试了php.net上imap:fetchstructure/fetchbody手册页面上的几乎所有建议。它们包括解码(至少对于编码=1、3、4)、应用imap_8bit、imap_qprint和imap_base64。手动查看txt/plain显示encoding=1,因此应用IMAP8bit

示例函数甚至无法确定返回的文本是纯文本还是html,因为在所有情况下,返回的$str始终是==“”(空字符串)

接下来,我无意中尝试了打印($str)(如果IMAP8bit未完成),并且该打印具有所需的电子邮件文本。 我认为这可能是没有IMAP8bit的多字节编码,mb_detect_编码返回UTF8(正如我在原始电子邮件文本中看到的那样)

再次尝试mb_convert_编码($str,“ASCII”)将返回空字符串。 在imap 8bit之前或之后,引用的可打印解码都没有帮助。 netbeans PHP调试器(xdebug)声明所有这些字符串为空,但宣布变量为“string”

有人知道如何获取电子邮件文本吗?打印显示它在那里,但我的头撞在墙上已经好几天了,没有任何结果

我可以手动搜索和解码边界等,这不会太难,但。。。为什么要重新发明轮子

代码:我主要使用了php.net fetch_结构页面和其他web资源中的两个版本。我可以把它们添加到这篇文章中,但现在不想把它放大太多

*调用get\u部分的getxtbody *调用getpart的getmesg

如果我查看纯文本,我会清楚地看到纯文本、html和pdf的(嵌套)边界

非常感谢您的帮助。Klaus

您可以尝试使用


要解码标题,您可以使用

非常感谢。。。尝试了这个方法,但它显示了与imap_fetchbody相同的行为:如果$email包含我从florish获取的电子邮件,那么属性text和html为“空”——netbeans调试器只在鼠标上方显示字符串。但打印(电子邮件)显示一切都在那里。编码不可读??我能做什么?如有必要,我可以发布原始电子邮件,因为雷鸟会将其导出(纯文本,所有边界等,但很长)。感谢您的帮助。KlausPlease发布mime/eml文件的内容。这似乎是一个奇怪的netbeans调试器问题。如果我单步执行解析例程,我的字符串将显示在调试器中。如果我运行所有代码,调试器只显示“string”。var:dump显示字符串。子字符串可以获取调试器显示的部分字符串。实际上,对于imap_fetchbody也是一样,我可以访问字符串,例如使用子字符串,但不能在IDE中显示它。无论如何,主要的问题似乎已经解决了——我的字符串被解码了,我可以处理它。这真的花了很多天。。。。哦,好吧。。。。无论如何,非常感谢你的回答哦,很明显,所有的问题都在以前的某个地方被问过——一个人只需要正确的问题。如何在netbeans中显示长字符串:ask stackoverflow。为什么netbeans在单步执行代码时显示字符串,而在单步执行到断点时不显示字符串。。。哦,不用谢,我没有回答你的问题。你自己干得不错。:)