在目录中循环播放PDF并发送电子邮件PHP

Please help. I realize this is elementary stuff but i'm confused as to why my PDFs are empty. I am receiving the emails with the PDF attachments but they are empty PDF files and I cannot figure out why. I have looked at other similar questions on here but have not found them helpful. I do not wish to use a framework or dependency. Thank you for your help. I expected to have this done within 15 minutes but this bug has set me back.

$dir = "scanned_files";

function is_dir_empty($dir) {
    if(!is_readable($dir)){
        return NULL;
    }
    $handle = opendir($dir);
    while(false !== ($entry = readdir($handle))){
        if ($entry != "." && $entry != "..") {
            return FALSE;
        }
    }
    return TRUE;
}

if (is_dir_empty($dir)) {
    echo "the folder is empty"; 
}else{
    $files = array_diff(scandir($dir), array('.', '..', '.DS_Store'));

    foreach($files as $filename){
        $content = file_get_contents($dir . "/" . $filename);
        $content = chunk_split(base64_encode($content));
        $email = "someone@somewhere.com";

        $subject = "Scanned document from the road!";

        $separator = md5(time());

        $headers = "From: someone@somewhere.com" . "
";
        $headers .= "MIME-Version: 1.0" . "
";
        $headers .= "Content-type: multipart/mixed; boundary=\"" . $separator . "\"" . "
";
        $headers .= "Content-Transfer-Encoding: 7bit" . "
";

        $msg = "--" . $separator . "
";
        $msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"" . "
";
        $msg .= "Content-Transfer-Encoding: 8bit" . "
";
        $msg .= "Your file has arrived." . "
";

        $msg .= "--" . $separator . "
";
        $msg .= "Content-Type: application/octet-stream; name=\"" . $filename . "\"" . "
";
        $msg .= "Content-Transfer-Encoding: base64" . "
";
        $msg .= "Content-Disposition: attachment" . "
";
        $msg .= $content . "
";
        $msg .= "--" . $separator . "--";

        mail($email, $subject, $msg, $headers);
        echo PHP_EOL . "Mail sent. Filename: " . $filename . PHP_EOL;
    }
}

When using the multi-part/mixed content type, each part must have a blank line separating the header from the body.

Each part starts with an encapsulation boundary, and then contains a body part consisting of header area, a blank line, and a body area.

W3 Documentation

In your code, your headers and message are being generated without any blank lines in between.

To correct this, just use instead of on the following lines:

$headers .= "Content-Transfer-Encoding: 7bit" . "

";
$msg .= "Content-Disposition: attachment" . "

";

Then your attachments will come out correctly.