Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menghantar berbilang fail sebagai lampiran dalam e-mel menggunakan PHP?

Bagaimana untuk menghantar berbilang fail sebagai lampiran dalam e-mel menggunakan PHP?

Susan Sarandon
Susan Sarandonasal
2024-11-02 21:51:02703semak imbas

How to send multiple files as attachments in an email using PHP?

Melampirkan dan Menghantar Berbilang Fail melalui E-mel dalam PHP

Tugas asal ialah mengubah suai kod yang hanya boleh menghantar satu lampiran fail untuk menghantar dua atau lebih banyak fail. Kod yang disemak ini menangani keperluan ini dengan membenarkan berbilang lampiran fail dihantar dalam e-mel:

<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>

Atas ialah kandungan terperinci Bagaimana untuk menghantar berbilang fail sebagai lampiran dalam e-mel menggunakan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn