1

連絡先を追跡するために PHP で構築したカスタムの Web ベースの連絡先管理システムがあり、最近 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 エンコードとして保存される電子メール メッセージを定義しています。プライバシーに関する機密情報を「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 ヘッダーに細心の注意を払ってください。

于 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
}

?>

電子メールで Pneumonoultramicroscopicsilicovolcanoconiosis という単語を使用する人がいる場合に備えて、45 を選びました。:D

しかし、ジョーダンは正しいかもしれません。base64でエンコードされているだけかもしれません。次に、ヘッダーを爆発させてそれを検索し、そこにある場合は、単純な base64_decode() でうまくいきます。

于 2009-04-30T19:55:59.810 に答える
0

これは、文字化けした電子メールの件名で私を助けました。 http://php.net/manual/en/function.imap-header.php

于 2012-06-04T22:07:22.167 に答える