使用PHP邮件输出多个附件

时间:2015-06-24 16:09:50

标签: php email

我想知道是否有人可以帮助我?我已经做了大量关于使用PHP邮件输出多个附件的研究,但我不能让我的上传表格正常工作。

背景:

我有一个表单,允许您上传多个图像。表单本身很好,我已经处理过一个图像没问题。表单发送带附件的电子邮件。尝试发送多个附件时出现问题。

我只能发送它。

我下面有一段代码,用于处理文件数组并将其添加到电子邮件的标题中。 (见下文)

    $headers = "MIME-Version: 1.0\r\n";
    $headers = "X-Mailer: PHP/" . phpversion()."\r\n";
    $headers .= "Content-Type: multipart/mixed; boundary=".md5('boundary1')."\r\n\r\n";
    $headers .= "From: Sell My Rolex <info@sellmyrolex.today>\r\n";

    $headers .= "--".md5('boundary1')."\r\n";
    $headers .= "Content-Type: multipart/alternative;  boundary=".md5('boundary2')."\r\n\r\n";

    $headers .= "--".md5('boundary2')."\r\n";
    $headers .= "Content-Type: text/plain; charset=ISO-8859-1\r\n\r\n";
    $headers .= $message."\r\n\r\n"; 


    $x="0";    

    foreach($files as $file){   

        $handle = fopen($destination.$file, "r");      
        $content = fread($handle, filesize($destination.$file));
        fclose($handle); 

        $attachment = chunk_split(base64_encode($content));           

        $headers .= "Content-Type:".$types[$x]."; ";
        $headers .= "name=\"".$file."\"\r\n";
        $headers .= "Content-Transfer-Encoding:base64\r\n";
        $headers .= "Content-Disposition:attachment; ";
        $headers .= "filename=\"".$file."\"\r\n";
        $headers .= "X-Attachment-Id:".rand(1000,9000)."\r\n\r\n";
        $headers .= $attachment."\n\n";            

    }

发送出去

 $message = wordwrap($message, 70);
 $mailSent = mail($to, $subject, $message, $headers);

但是,我收到主电子邮件上方的电子邮件是

  

内容类型:图像/ PNG;命名=&#34; image1.png&#34;   内容传输编码:BASE64   内容处置:附件;文件名=&#34; image1.png&#34;   X-附件-ID:6299

     

- f2b57013356e3f84c2c6b1d9b77f95d2 - 内容 - 类型:图像/ PNG;名称=&#34; cleanoffice.png&#34;   内容传输编码:BASE64   内容处置:附件;文件名=&#34; cleanoffice.png&#34;   X-附件-ID:5833

有人能指出我正确的方向吗?我知道人们可能想建议使用像PHPmailer这样的库而不是基本的php邮件,但我想用php邮件来完成这个。

非常感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:0)

您需要包含多个边界以标记不同的附件。以下为您提供了一个很好的例子。

http://www.qcode.co.uk/post/70