2011-08-06 4 views
0

私は3つの方法を使用してGmailの受信トレイからメールをバックアップしています。 電子メールバックアップ用のgmailメールオブジェクト文字列をファイルに保存しようとしましたが、これを.emlファイルとして保存しています。次のコードを使用して:PHP Zend_mail gmail API電子メールバックアップのエンコーディングの問題

<?php 
    for($i = $totalMessages; $i >= ($totalMessages-$pager) && $i <= $totalMessages; $i--) 
{ 
    $msg = $storage->getMessage($i); 

    file_put_contents($i.".eml", $msg); 
?> 

を私はOutlookまたは任意の他のメールブラウザでそれを見たとき、私は、メールで必要な情報を見つけることができない、彼らが表示されるようniether添付ファイルが示されているが、添付ファイルがBASE64に示されています文字列としてエンコードされます。

Cannot see any Subject,sender, recipient or attachment information

Unformated html showing instead of webpage

attached image as string

私は、彼らがpropperly表示される、メール、ブラウザでそれらを見て、後に受信トレイに電子メールを復元します。 誰かが私を助けることができますか?

+1

あなたは、テキスト・エディタでの.emlファイルを開き、内部に何があるか見てみましたがありますか?これは有効なエンコードされた電子メールのようですが、上部に「追加の」非電子メールデータがあると、電子メールパーサを「混乱させる」可能性があります。 – vstm

答えて

1

あなたは、いくつかの電子メールクライアント(見通しなど)でそれを示すために.emlファイルにヘッダを追加する必要が

私はそれを次のようでした:

=($ totalMessages- $をページャ)& & $ i < = $ totalMessages; $ i--) { $ msg = $ storage-> getMessage($ i);

$headers = "Date: " . $msg->date."\n" 
       ."Delivered-To: ". $msg->to ."\n" 
       ."Subject: " . $msg->subject ."\n" 
       ."From: " . $msg->from ."\n" 
       ."To: " . $msg->to ."\n" 
       ."Content-Type: " . $msg->contentType."\n\n"; 


file_put_contents($i.".eml", $headers.$msg->getContent()); 

?>

運のベスト