Heim  >  Artikel  >  Backend-Entwicklung  >  Wie sende ich mit PHP mehrere Dateien als Anhänge in einer E-Mail?

Wie sende ich mit PHP mehrere Dateien als Anhänge in einer E-Mail?

Susan Sarandon
Susan SarandonOriginal
2024-11-02 21:51:02703Durchsuche

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

Anhängen und Senden mehrerer Dateien per E-Mail in PHP

Die ursprüngliche Aufgabe bestand darin, Code zu ändern, der nur einen Dateianhang senden konnte, um zwei zu senden oder mehr Dateien. Dieser überarbeitete Code erfüllt diese Anforderung, indem er das Versenden mehrerer Dateianhänge in einer E-Mail ermöglicht:

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

Das obige ist der detaillierte Inhalt vonWie sende ich mit PHP mehrere Dateien als Anhänge in einer E-Mail?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn