-1

重複の可能性:
PHP imap の問題

PHP スクリプトからメール (gmail) を使用できるようにする必要があります。しかし、どこを試しても、メールの本文は =3D やランダムな等号などの文字ですべてがゴミになります。場合によっては、base64 またはまったく何も入力されないこともあります。HTML が利用できない場合、どうすれば電子メールを取得し、HTML Purifier のクリーンな HTML または pre タグのプレーンテキストで表示できますか?

$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

1

「=3D やランダムな等号などの文字」を含むメッセージは、引用印刷可能にエンコードされています。quoted_printable_decode を使用して php を使用してデコードできます。

メール メッセージをエンコードする方法には、quited-printable や base64 など、さまざまな方法があります。送信者は、使用されるエンコーディングを決定します。

于 2013-01-05T13:16:06.547 に答える