1

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

  1. 将消息复制到与该联系人关联的 MySQL 数据库表中
  2. 标记该联系人以在当天跟进
  3. 在 Gmail 中归档邮件

一切似乎都运行良好,除了……每封这么多电子邮件,我们都会收到一条看起来像这样的非常乱码的消息:

FABRRRQAUUUUAJXDjxZrUtzNFa2UMwjYj5YnYgZ74Ndwa4bwfzqmpH3/wDZjTcl CnKdr2Fa7SJP+Ek8S/8AQJX/AMB5P8aZN4s162j33GmxxrnG54XUfqa6ysHxp/yA/wDtqv8AWuej jFUqKDgtSpQsr3L13r4tPDcOoShBcTxgog6FiP5CsrwtpjuzavekvcTZKFuwPf8AH+VZOlwS+Iby 1jlBFnZRKhGeDjt9Sf0Fd0qhVCqAABgA

我回去查看消息,它似乎只是文本,所以我不认为它是图像。知道如何防止这种情况吗?

提前致谢。

真挚地,

詹姆士

4

3 回答 3

2

您提供的示例看起来像是 base64 编码的。电子邮件的标题将告诉您如何处理电子邮件的内容。

例如,以下定义了正文为纯文本的电子邮件消息,但其存储为 base64 编码。我已经“删除”了隐私敏感信息。

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 标头。

于 2009-04-30T19:50:33.723 回答
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 编码。然后我会explode()标题并搜索它,如果它在那里,一个简单的base64_decode()就可以了。

于 2009-04-30T19:55:59.810 回答
0

这帮助我处理了一个乱码的电子邮件主题。 http://php.net/manual/en/function.imap-header.php

于 2012-06-04T22:07:22.167 回答