2011-10-18 16 views
0

私はPHPで電子メールを扱う際にはかなり新しいです。電子メールの添付ファイルを電子メールメッセージとして保存する方法は?

基本的に私はpop3メールボックスを読んで、メッセージをデータベースに保存し、添付ファイルをフォルダに保存する必要があります。同じメールを別のメール受信者に返信します。

私はこれがすべて動作していると思っていましたが、添付ファイルが別のメールメッセージであると認識しました。私は本文を本文として受け取っています(base64_decodeの後)。

添付された電子メールをファイルに保存し、別のメッセージの添付ファイルとして送信することはできますか?

ご協力いただければ幸いです。ここで

は、大局的にそれを置くためにいくつかのコードです:

// This is the IMAP connection: imap_open("{"."$host:$port/pop3$ssl"."}$folder",$user,$pass,OP_SILENT); 
$mailConnection = $this->Maildata->mail_login($host,$port,$user,$pass,$folder,$ssl); 

// This retrieves the list of mails in the current folder 
$messageList = $this->Maildata->mail_list($mailConnection,$message); 
foreach ($messageList as $messageId => $messageListData) { 

    // This reads the mail object into an array 
    $mailMessage = $this->Maildata->mail_mime_to_array($mailConnection,$messageId,true); 

    // This loops through each mail 
    foreach ($mailMessage as $tmpId => $tmpData) { 
     // Excluded save to database since it is unrelated 

     // This checks if item is an attachment and saves it. 
     if (isset($tmpData['is_attachment']) && $tmpData['is_attachment'] === true) { 
      $tmpName = date('Y-m-d H:i:s', strtotime('now')); 
      $this->Maildata->mail_attachment_save($tmpData['data'], $tmpName .$tmpData['name']); 
     } 
    } 
} 

P.S.これはすべて動作しますが、imap_fetchbody($mailConnection , $messageId, $prefix);は必要なすべてのデータを送信していないようです。

+0

コードをお知らせください。それは "別のメッセージ"、どのMIMEパーサを使用していると言うのは間違っていますか? – DaveRandom

+0

これは役に立つかもしれません:http://php.net/manual/en/book.imap.php「IMAP」と書いてありますが、私はPOPでもうまくいくと信じています。 –

+0

@DaveRandom IMAPを使用してメールボックスに接続しています。私はいくつかのコードを追加しますが、私はそれが助けになるとは思わない。 – Nightwolf

答えて

0

はい。

添付されたメールメッセージはファイルとして保存できますが、Microsoft Office Outlookで認識できる形式ではありません。興味深いことに、ファイルを.emlとして保存すると、Windows Liveメールはメッセージを完全に処理します。

OutlookやWindlowsライブメールのように添付ファイルを扱うウェブメールサービスはありません.gmailはそれらを完全に無視します。

関連する問題