Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHPIMAP,从iphone发送的带有附加照片的电子邮件给出了奇怪的代码_Php_Email_Imap - Fatal编程技术网

PHPIMAP,从iphone发送的带有附加照片的电子邮件给出了奇怪的代码

PHPIMAP,从iphone发送的带有附加照片的电子邮件给出了奇怪的代码,php,email,imap,Php,Email,Imap,以下是问题之前的背景: 上下文:我有一个工作的门户网站来发送和接收电子邮件。 我使用imap_open与ressource、电子邮件通行证等一起使用,所有这部分都正常,99%收到的电子邮件都能正常工作 问题是1%不起作用 有人有一部iPhone,给我发了一封附有照片的电子邮件 当我通过我的imap_open和imap_fetchbody收到电子邮件,并根据fetch_标头中标识的imap编码进行解码时。。。我明白了 ????EXIFMM* ???????? AppleiPhone........

以下是问题之前的背景: 上下文:我有一个工作的门户网站来发送和接收电子邮件。 我使用imap_open与ressource、电子邮件通行证等一起使用,所有这部分都正常,99%收到的电子邮件都能正常工作

问题是1%不起作用 有人有一部iPhone,给我发了一封附有照片的电子邮件

当我通过我的imap_open和imap_fetchbody收到电子邮件,并根据fetch_标头中标识的imap编码进行解码时。。。我明白了

????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答案也很好;)