2016-05-12 13 views
0

私は電子メールクライアントを作っています。私はサーバ上のメールに添付されているすべてのファイルを保存する機能を持っています。ファイルはサーバー上に保存されていますが、すべてのファイルのサイズが0 KBになり、すべてのファイルのエンコーディングが3に等しいという問題があります。imap_fetchbody()の正しいオプション。

imap_fetchbody()の正しいオプションを選択する方法を知りたい添付ファイルのサブタイプの基礎。

これは私のコードです:

if($attachments[$i]['is_attachment']){ 

    $attachments[$i]['attachment'] = imap_fetchbody($imap, $uid, $i + 1;); 

    if($structure->parts[$i]->type == 1){ 
     // 3 = BASE64 
     $attachments[$i]['attachment'] = imap_8bit($attachments[$i]['attachment']); 
    } 

    if($structure->parts[$i]->type == 2){ 
     // 3 = BASE64 
     $attachments[$i]['attachment'] = imap_binary($attachments[$i]['attachment']); 
    } 

    if($structure->parts[$i]->type == 7){ 
     // 3 = BASE64 
     $attachments[$i]['attachment'] = imap_base64($attachments[$i]['attachment']); 
    } 

    if($structure->parts[$i]->type == 4){ 
     // 3 = BASE64 
     $attachments[$i]['attachment'] = imap_qprint($attachments[$i]['attachment']); 
    } 

    if($structure->parts[$i]->type == 3){ 
     // 3 = BASE64 
     $attachments[$i]['attachment'] = base64_decode($attachments[$i]['attachment']); 
    } 
    elseif($structure->parts[$i]->type == 4){ 
     // 4 = QUOTED - PRINTABLE 
     $attachments[$i]['attachment'] = quoted_printable_decode($attachments[$i]['attachment']); 
    } 
    //return $message; 

} 

答えて

1

あなたは転送エンコーディングではなく、種類を見てする必要があり、それは違うと特定のファイルの種類(例えば、画像、タイプ5またはTYPEIMAGE)をエンコードすることが可能ですので、エンコーディング(base64やquoted-printableなど)

このような何か:

if($structure->parts[$i]->encoding == ENC8BIT){ 
    $attachments[$i]['attachment'] = imap_8bit($attachments[$i]['attachment']); 
} 

elseif($structure->parts[$i]->encoding == ENCBINARY){ 
    $attachments[$i]['attachment'] = imap_binary($attachments[$i]['attachment']); 
} 

elseif($structure->parts[$i]->encoding == ENCBASE64){ 
    $attachments[$i]['attachment'] = imap_base64($attachments[$i]['attachment']); 
} 

elseif($structure->parts[$i]->encoding == ENCQUOTEDPRINTABLE){ 
    $attachments[$i]['attachment'] = imap_qprint($attachments[$i]['attachment']); 
} 
関連する問題