-1

PHPスクリプトからGmailを使用できるようにする必要があります。しかし、私が何をしようとしても、メッセージ本文は =3D やランダムな等号などの文字ですべてがらくたになります。base64 として出力されることもあれば、何も出力されないこともあります。HTML が利用できない場合、どうすれば電子メールを取得し、HTMLPurifier のクリーンな HTML またはプレーン テキストで表示することができますか。

$overview = imap_fetch_overview($inbox,$email_number,0);

$body_pre = imap_fetchbody($inbox, $email_number, 2.1); 

$message = imap_fetchbody($inbox, $email_number, 2.2); 

$message = base64_decode($message);

if (empty($message))
 {
  $message = $body_pre;
  $message = preg_replace('@(https?://([-\w\.]+)+(:\d+)?((/[\w/_\.%\-+~]*)?(\?\S+)?)?)@', '<a href="$1">$1</a>',$message);
$message = '<pre>'.htmlentities($message).'</pre>';  

}else{

 $cleanconfig = HTMLPurifier_Config::createDefault();
 $cleanconfig->set('Core.Encoding', 'UTF-8');
 $cleanconfig->set('HTML.Doctype', 'HTML 4.01 Transitional');
 $purifier = new HTMLPurifier($cleanconfig);

  $message = $purifier->purify($message);

 }

このコードでは、$message が空白になります。

4

1 に答える 1

2

メールメッセージは常に2.2の位置にあると想定していますか?保証はまったくありません...送信されるメッセージによって異なります。プランテキスト(1つの本文のみ)、html / text(2つ)、別のメールへの返信に添付ファイル(3つ以上)が含まれます(その後、他のメールは本文になりますそれはそれ自身のサブボディです)。

=3Dquoted printable)およびbase64データは、メッセージ本文のエンコードによるものです。imap_fetchstructureメッセージに含まれる部分の数を説明するものを見て(テキストを検索してテキストを見つけることができます)、->type各本文のコンポーネントを確認して、そのエンコーディングについて学習します(type = 4は印刷可能で引用され、type =3はbase64です) )。

于 2013-01-04T14:33:32.990 に答える