Home > Article > Backend Development > How to Send Multiple File Attachments with Email in PHP?
Introduction
When dealing with email communication involving the transfer of documents, you may occasionally need to attach multiple files rather than just a single one. PHP provides a robust platform for handling such email operations.
Understanding the Original Code
The original code you provided successfully sends a single file attachment. However, to attach multiple files, certain modifications are necessary.
Solution: Enhancements for Multiple File Attachment
The improved code below enables the sending of multiple files as attachments:
<code class="php"><form action="#" method="POST" enctype="multipart/form-data" > <input type="file" name="csv_file[]" /> <br/> <input type="file" name="csv_file[]" /> <br/> <input type="file" name="csv_file[]" /> <br/> <input type="submit" name="upload" value="Upload" /> <br/> </form> <?php if ($_POST) { $csv_files = array(); $files = array(); for ($i=0; $i < count($_FILES['csv_file']['name']); $i++){ $csv_files[] = $_FILES['csv_file']['name'][$i]; } // array with filenames to be sent as attachments $files = $csv_files; // email fields: to, from, subject, and so on $to = "[email protected]"; $from = "[email protected]"; $subject = "My subject"; $message = "My message"; $headers = "From: $from"; // boundary $semi_rand = md5(time()); $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; // headers for attachment $headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\""; // multipart boundary $message = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n"; $message .= "--{$mime_boundary}\n"; // preparing attachments for($x=0;$x<count($files);$x++){ $file = fopen($files[$x],"rb"); $data = fread($file,filesize($files[$x])); fclose($file); $data = chunk_split(base64_encode($data)); $message .= "Content-Type: {\"application/octet-stream\"};\n" . " name=\"$files[$x]\"\n" . "Content-Disposition: attachment;\n" . " filename=\"$files[$x]\"\n" . "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n"; $message .= "--{$mime_boundary}\n"; } // send $ok = @mail($to, $subject, $message, $headers); if ($ok) { echo "<p>mail sent to $to!</p>"; } else { echo "<p>mail could not be sent!</p>"; } } ?></code>
Explanation:
The above is the detailed content of How to Send Multiple File Attachments with Email in PHP?. For more information, please follow other related articles on the PHP Chinese website!