PHP で複数のファイルを電子メールに添付して送信する
元のタスクは、添付ファイルを 1 つだけ送信できるコードを変更して、2 つの添付ファイルを送信することでしたまたはそれ以上のファイル。この改訂されたコードは、複数の添付ファイルを電子メールで送信できるようにすることで、この要件に対処しています:
<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) { // Create arrays for file information $ftype = $_FILES['csv_file']['type']; $fname = $_FILES['csv_file']['name']; // Define files to be attached $files = $fname; // Email fields $to = "recipient@example.com"; $from = "sender@example.com"; $subject = "Attachments"; $message = "Email with attached files"; $headers = "From: $from"; // Set MIME boundary $semi_rand = md5(time()); $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; // Create multipart header $headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\""; // Build multipart message $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"; // Prepare each attachment foreach ($files as $key => $value) { $file = fopen($value, "rb"); $data = fread($file, filesize($value)); fclose($file); $data = chunk_split(base64_encode($data)); $message .= "Content-Type: {\"application/octet-stream\"};\n" . " name=\"$fname[$key]\"\n" . "Content-Disposition: attachment;\n" . " filename=\"$fname[$key]\"\n" . "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n"; $message .= "--{$mime_boundary}\n"; } // Send email $ok = @mail($to, $subject, $message, $headers); if ($ok) { echo "<p>Email sent to $to!</p>"; } else { echo "<p>Email could not be sent!</p>"; } } ?></code>
以上がPHP を使用して複数のファイルを電子メールの添付ファイルとして送信するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。