Introduction
Lorsque vous traitez une communication par e-mail impliquant le transfert de documents, vous pouvez occasionnellement devez joindre plusieurs fichiers plutôt qu’un seul. PHP fournit une plate-forme robuste pour gérer de telles opérations de courrier électronique.
Comprendre le code d'origine
Le code d'origine que vous avez fourni envoie avec succès une seule pièce jointe. Cependant, pour joindre plusieurs fichiers, certaines modifications sont nécessaires.
Solution : Améliorations pour les pièces jointes multiples
Le code amélioré ci-dessous permet l'envoi de plusieurs fichiers en pièces jointes :
<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>
Explication :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!