Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php电子邮件附件提取_Php_Email_Attachment_Pop3_Extraction - Fatal编程技术网

Php电子邮件附件提取

Php电子邮件附件提取,php,email,attachment,pop3,extraction,Php,Email,Attachment,Pop3,Extraction,我正在尝试创建一段代码,它将进入邮箱并取出特定文件的附件。到目前为止,我只能查看电子邮件上是否有附件或没有附件 但我希望它能够从电子邮件中取出附件,然后将它们保存到指定的目录中。我试图取出的附件类型是.jpg 我尝试了在谷歌上找到的一系列不同的代码,我一直在尝试将其裁剪成适合我的代码,但到目前为止,我没有找到任何正确工作的代码 我想知道是否有人能帮我创建一段代码,能够从电子邮件中取出附件并将其存储在目录中 谢谢 <?php /* connect to email */ $

我正在尝试创建一段代码,它将进入邮箱并取出特定文件的附件。到目前为止,我只能查看电子邮件上是否有附件或没有附件

但我希望它能够从电子邮件中取出附件,然后将它们保存到指定的目录中。我试图取出的附件类型是.jpg

我尝试了在谷歌上找到的一系列不同的代码,我一直在尝试将其裁剪成适合我的代码,但到目前为止,我没有找到任何正确工作的代码

我想知道是否有人能帮我创建一段代码,能够从电子邮件中取出附件并将其存储在目录中

谢谢

<?php

    /* connect to email */
    $hostname = '{*****.com:110/pop3}INBOX';
    $username = '*****';
    $password = '*****';

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

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

    // Search for the 39th email, which has an attachment
    $count = 39;


    // Fetch all the information about an email
    $attachment = imap_fetchstructure($inbox, $count);


    // find out how may parts the object has
    $numparts = count($attachment->parts);

// find if if multipart message
if ($numparts >= 2) {


   foreach ($attachment->parts as $part) {

      if ($part->disposition == "INLINE") {
         // inline message. Show number of lines

         printf("Inline message has %s lines<BR>", $part->lines);

      } elseif ($part->disposition == "ATTACHMENT") {
         // an attachment

         echo "Attachment found!";
         // print out the file name
         echo "Filename: ", $part->dparameters[0]->value;

      }

   }

}
    //}
    else {
   // only one part so get some useful info
   echo "No attachment";
}

imap_close($imap);
?>

而不是
imap\u search
我使用
imap\u check
来检索邮件概述,下面的工作正常。 查看通过
imap\u check
找到的消息,以下是提取附件二进制数据的方法:

    $mbox = imap_open( . . . . );
    $IMAPobj = imap_check($inbox);

    $start = $IMAPobj->Nmsgs-30;
    $end = $IMAPobj->Nmsgs;
    $result = imap_fetch_overview($inbox,"$start:$end",0);

    $count = $end;
    foreach ($result as $overview) {
        $parts = mail_mime_to_array($inbox, $count);
        foreach($parts as $part) {
            if(@$part['filename'] || @$part['name'] ) {

                $partName = $part['filename'] ? $part['filename'] : $part['name'];
                echo "Attachment name is " . basename($partName);
                echo "\n";

                if(preg_match( . . . write here a regex to detect ".jpg" in $partName . . .)) {
                    echo "Found file! Extracting binary data...";

                    $fileContents = $part['data'];
                    file_put_contents("attachment.jpg", $fileContents);
                }
            }
        }
    }

谢谢,我试试看。