PHPIMAP,从iphone发送的带有附加照片的电子邮件给出了奇怪的代码
以下是问题之前的背景: 上下文:我有一个工作的门户网站来发送和接收电子邮件。 我使用imap_open与ressource、电子邮件通行证等一起使用,所有这部分都正常,99%收到的电子邮件都能正常工作 问题是1%不起作用 有人有一部iPhone,给我发了一封附有照片的电子邮件 当我通过我的imap_open和imap_fetchbody收到电子邮件,并根据fetch_标头中标识的imap编码进行解码时。。。我明白了PHPIMAP,从iphone发送的带有附加照片的电子邮件给出了奇怪的代码,php,email,imap,Php,Email,Imap,以下是问题之前的背景: 上下文:我有一个工作的门户网站来发送和接收电子邮件。 我使用imap_open与ressource、电子邮件通行证等一起使用,所有这部分都正常,99%收到的电子邮件都能正常工作 问题是1%不起作用 有人有一部iPhone,给我发了一封附有照片的电子邮件 当我通过我的imap_open和imap_fetchbody收到电子邮件,并根据fetch_标头中标识的imap编码进行解码时。。。我明白了 ????EXIFMM* ???????? AppleiPhone........
????EXIFMM* ???????? AppleiPhone........
为什么以及如何修复它
这里是我处理解码的代码示例
switch ( $imap_encoding ) {
case 0 : $imapx__fetchbody = $imapx__fetchbody; break;
case 1 : $imapx__fetchbody = quoted_printable_decode(imap_8bit($imapx__fetchbody)); break;
case 2 : $imapx__fetchbody = imap_binary($imapx__fetchbody); break;
case 3 : $imapx__fetchbody = imap_base64($imapx__fetchbody); break;
case 4 : $imapx__fetchbody = quoted_printable_decode($imapx__fetchbody); break;
default : $imapx__fetchbody = $imapx__fetchbody; break;
}
//test body if base64 because some emails have miss identified imap_encoding
if ( base64_encode(base64_decode($imapx__fetchbody, true)) === $imapx__fetchbody){ $imapx__fetchbody = imap_base64($imapx__fetchbody); }
这是一个全身样本
您应该阅读以下内容:
if显示如何确定图像类型。特别是对于EXIF,您必须使用此函数
及
有两个函数用于解码exif
Configuration options
----------------------
exif.encode_unicode "ISO-8859-15"
exif.decode_unicode_motorola "UCS-2BE"
exif.decode_unicode_intel "UCS-2LE"
exif.encode_jis ""
exif.decode_jis_motorola "JIS"
exif.decode_jis_intel "JIS"
然后你可以写一些类似的东西:
你能发一封示例电子邮件吗?@MaxMuster嗨,我试图粘贴它,但由于代码怪异,stackoverflow说我无法保存,所以我用一个图片屏幕编辑了这个问题,它看起来像什么请把这个文件放在我可以下载的地方format@MaxMuster我找到了另一个解决办法。。。检索imap_fetchbody时,我添加了一条规则来检查获取的正文是否包含?exif,然后传递到其他电子邮件部分。***你的exif答案也很好;)