Gmail IMAP电子邮件内容出现乱码

时间:2009-04-30 19:23:47

标签: php gmail imap

我有一个基于Web的自定义联系人管理系统,我们用PHP构建它来跟踪联系人,最近开始使用IMAP检查我们的Google电子邮箱,然后,如果该联系人在我们的联系人管理系统中:

  1. 将消息复制到与该联系人关联的MySQL数据库表中
  2. 标记该联系人以便当天跟进
  3. 在Gmail中存档邮件
  4. 一切似乎都很有效,除了......每隔这么多电子邮件,我们都会看到一条非常乱码的消息:

    FABRRRQAUUUUAJXDjxZrUtzNFa2UMwjYj5YnYgZ74Ndwa4bwfzqmpH3 / wDZjTcl CnKdr2Fa7SJP + Ek8S / 8AQJX / AMB5P8aZN4s162j33GmxxrnG54XUfqa6ysHxp / YA / wDtqv8AWuej jFUqKDgtSpQsr3L13r4tPDcOoShBcTxgog6FiP5CsrwtpjuzavekvcTZKFuwPf8AH + VZOlwS + IBY 1jlBFnZRKhGeDjt9Sf0Fd0qhVCqAABgA

    我回去查看邮件,它似乎只是文字,所以我不认为这是一张图片。知道怎么预防吗?

    提前致谢。

    此致

    詹姆斯

3 个答案:

答案 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