我有一个基于Web的自定义联系人管理系统,我们用PHP构建它来跟踪联系人,最近开始使用IMAP检查我们的Google电子邮箱,然后,如果该联系人在我们的联系人管理系统中:
一切似乎都很有效,除了......每隔这么多电子邮件,我们都会看到一条非常乱码的消息:
FABRRRQAUUUUAJXDjxZrUtzNFa2UMwjYj5YnYgZ74Ndwa4bwfzqmpH3 / wDZjTcl CnKdr2Fa7SJP + Ek8S / 8AQJX / AMB5P8aZN4s162j33GmxxrnG54XUfqa6ysHxp / YA / wDtqv8AWuej jFUqKDgtSpQsr3L13r4tPDcOoShBcTxgog6FiP5CsrwtpjuzavekvcTZKFuwPf8AH + VZOlwS + IBY 1jlBFnZRKhGeDjt9Sf0Fd0qhVCqAABgA
我回去查看邮件,它似乎只是文字,所以我不认为这是一张图片。知道怎么预防吗?
提前致谢。
此致
詹姆斯
答案 0 :(得分:2)
您提供的示例看起来像是base64编码的。电子邮件的标题将告诉您如何处理电子邮件的内容。
例如,以下定义了一个电子邮件消息,其中正文是纯文本,但它存储为base64编码。我已经“x”删除了隐私敏感信息。
Received: from xxxxxxxxx ([xxx.xx.xx.xxx]) by xxxxxxxxxx.xxx.xxxxxxxxxxxxxxx.xxx with Microsoft SMTPSVC(6.0.3790.3959);
Wed, 29 Apr 2009 21:29:16 +0000
Received: from xxxx-xxx-xxxxxx ([xxx.xx.xxx.xxxx]) by xxxxxxxx ; Wed, 29 Apr 2009 15:29:16
-0600
Message-ID: <AADB29A7-AAED-4068-B4A8-300E3B0D93AB@localhost>
MIME-Version: 1.0
From: xxxxxxxxxx@xxxxxxxxxxxxxxx.com
To: xxxxxxxxxx@xxxxxxxxxxxxxxx.com
Date: 29 Apr 2009 15:29:16 -0600
Subject: xxxx Account Update
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: base64
Return-Path: xxxxxx@xxxxxxxx.com
X-OriginalArrivalTime: 29 Apr 2009 21:29:16.0374 (UTC) FILETIME=[8C63AF60:01C9C911]
密切关注Content-Type和Content-Transfer-Encoding标头。
答案 1 :(得分:1)
我认为IMAP是通过SSL的,因此它可能与IMAP的连接不同步。我所拥有的最佳解决方案就是检查身体是否包含一个非常长的单词。因为那个乱码没有空格:
<?php
function wordlength($txt, $limit)
{
$words = explode(' ', $txt);
foreach($words as $v)
{
if(strlen($v) > $limit)
{
return false;
}
}
return true;
}
?>
用法:
<?php
$txt = "Message Body would be here";
if(!wordlength($txt, 45))
{
//maybe try to pull the message again or
//send an email to you telling you there is a problem
}
?>
我选择了45,以防有些人在电子邮件中使用Pneumonoultramicroscopicsilicovolcanoconiosis这个词。 :d
乔丹可能是对的。它可能只是base64编码。我只是爆炸()然后然后搜索它,如果它在那里,一个简单的base64_decode()就可以了。
答案 2 :(得分:0)
这帮助了我一个乱码的电子邮件主题。 http://php.net/manual/en/function.imap-header.php