PHP:邮件功能可将图像作为附件发送,仅包含一个附件即可收到电子邮件

问题描述

我正在尝试使用邮件功能将多个图像作为电子邮件附件发送。我尝试附加3张图片,但是在我的电子邮件中,我只收到一张包含电子邮件图片。 我尝试在for循环中回显数据,它显示了所有三个带有消息变量的图像。 这是表单提交后的代码

仅供参考:我没有使用PHPMailer,就我而言,这是不可能的。

$postData = $uploadedFile = $statusMsg = '';
$msgClass = 'errordiv';

if (isset($_POST['submit']) && isset($_FILES) && (bool)$_FILES) {

    $allowTypes = array('pdf','jpg','png','jpeg');
    $files = array();

    $address = "abc@example.com"; // this is your Email address
    $member_contact = $_POST['member_contact'];
    $member_name = $_POST['member_name'];
    $membership_number = $_POST['membership_number'];

    $subject = "Form Subject";
    $htmlContent = "<h2>Contact Request Submitted</h2>
                    <p><b>Member's Name</b>: " . $member_name . "</p>
                    <p><b>Membership No.</b>: " . $membership_number . "</p>
                    <p><b>Member's Contact Number</b>: " . $member_contact . "</p>";

    //headers for attachment
    $semi_rand = md5(uniqid(time()));
    $eol = PHP_EOL;

    $headers = "From: example ".$eol;
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: multipart/mixed; boundary=\"".$semi_rand."\"";

    // Put everything else in $message
    $message = "--".$semi_rand.$eol;
    $message .= "Content-Type: text/html; charset=ISO-8859-1".$eol;
    $message .= "Content-transfer-encoding: 8bit".$eol.$eol;
    $message .= $htmlContent.$eol;
    $message .= "--".$semi_rand.$eol;
    foreach (count($_FILES) > 0 ? $_FILES : array() as $name => $files) {

            $file = fopen($files['tmp_name'],"rb");
            $data = fread($file,filesize($files['tmp_name']));
            fclose($file);
            $data = chunk_split(base64_encode($data));
            $name = $files['name'];

            $message .= "Content-Type: application/octet-stream; name=\"".basename($name)."\"\n" .
                "Content-Description: ".basename($name)."\n" .
                "Content-disposition: attachment;\n" . " filename=\"".basename($name)."\"; size=".filesize($files['tmp_name']).";\n" .
                "Content-transfer-encoding: base64\n\n" . $data . "\n\n";
            $message .= "--".$semi_rand."--";

    }
    // Send email
    $mail = mail($address,$subject,$message,$headers);

    try{
        if ($mail) {
            $statusMsg = 'Your contact request has been submitted successfully !';
            $msgClass = 'succdiv';

            $postData = '';
        } else {
            print_r(error_get_last());
            die("error");
            $statusMsg = 'Your contact request submission Failed,please try again.';
        }
    }catch(Exception $e){
        die($e->getMessage());
    }

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)