1

これはもうすぐ終わりますが、添付ファイルのダウンロードに行き詰まっています。

これまでのところ、必要なすべての電子メール ヘッダー情報を次のコードで取得しています。

(また、コマンドライン経由でこれを行っています:CentOS 6)

<?php
echo "\n";
$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = 'myemail@mydomain.com';
$password = 'myfunpassword';

/* try to connect */
$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error());

/* grab emails */
$emails = imap_search($inbox,'ALL'); 

/* if emails are returned, cycle through each... */
if($emails) {

    /* begin output var */
    $output = '';

    /* put the newest emails on top */
    rsort($emails);

    /* for every email... */
    foreach($emails as $email_number) {

        /* get information specific to this email */
        $overview = imap_fetch_overview($inbox,$email_number,0);
        $message = imap_fetchbody($inbox,$email_number,1);

        $output.= $email_number."\n";
        $output.= ($overview[0]->seen ? '[read]' : '[unread]')."\n"; 
        $output.= "date:".$overview[0]->date."\n";
        $output.= "to:".$overview[0]->to."\n";
        $output.= "from:".$overview[0]->from."\n";
        $output.= "size:".$overview[0]->size."\n"; //size in bytes
        $output.= "msgno:".$overview[0]->msgno."\n"; 
        $output.= "message_id:".$overview[0]->message_id."\n"; //Message-ID
        $output.= "uid:".$overview[0]->uid."\n"; //UID the message has in the mailbox
        $output.= "from:".$overview[0]->from."\n";
        $output.= "subject:".$overview[0]->subject."\n";
        /* output the email body */
        $output.= "message:".$message; 


                /* detect attachments here */


                $output.="\n\n";
        }
  echo $output;

} // eof $emails check

imap_close($inbox);
?>

これはうまくいきます!これで、各メールに添付ファイルがあるかどうかを通知する次のコードが得られました。

<?php
// put this code above where it says "detect attachments here"

        // attachments detection
        $struct = imap_fetchstructure($inbox,$email_number);
        $contentParts = count($struct->parts);      

           if ($contentParts >= 2) {
                for ($i=2;$i<=$contentParts;$i++) {
                    $att[$i-2] = imap_bodystruct($inbox,$email_number,$i);
                }
                for ($k=0;$k<sizeof($att);$k++) {
                    if ($att[$k]->parameters[0]->value == "us-ascii" || $att[$k]->parameters[0]->value    == "US-ASCII") {
                        if ($att[$k]->parameters[1]->value != "") {
                            $selectBoxDisplay[$k] = $att[$k]->parameters[1]->value;
                        }
                    } elseif ($att[$k]->parameters[0]->value != "iso-8859-1" &&    $att[$k]->parameters[0]->value != "ISO-8859-1") {
                        $selectBoxDisplay[$k] = $att[$k]->parameters[0]->value;
                    }
                }

               if (sizeof($selectBoxDisplay) > 0) {
                    for ($j=0;$j<sizeof($selectBoxDisplay);$j++) {
                        $output.= "\n--file:". $selectBoxDisplay[$j]."";
                    }
               }

           }

        // eof attachments detection
?>

そして、これも機能します!しかし今、私は添付ファイルをダウンロードする必要があるところまで来ており、ほとんどのチュートリアルでは、CLI ではなくブラウザーの観点からそれを行う方法を示しています。だから私は間違いなくここで少し助けが必要です.

サーバー上のファイルをダウンロードする場所を決定する方法もあると思います。

4

0 に答える 0