Heim >Backend-Entwicklung >PHP-Tutorial >Wie versende ich mit PHP mehrere Dateianhänge in E-Mails?

Wie versende ich mit PHP mehrere Dateianhänge in E-Mails?

Susan Sarandon
Susan SarandonOriginal
2024-11-02 18:21:02415Durchsuche

How to Send Multiple File Attachments in Emails Using PHP?

So hängen Sie mehrere Dateien an eine E-Mail in PHP an

In PHP können Sie mehrere Dateien an eine E-Mail anhängen und diese gleichzeitig senden. Dies ist nützlich, um große oder wichtige Dokumente zu teilen.

Multipart-MIME-Format

Um mehrere Dateien an eine E-Mail anzuhängen, müssen Sie das Multipart-MIME-Format verwenden. Mit MIME (Multipurpose Internet Mail Extensions) können Sie verschiedene Datentypen in einer einzigen E-Mail-Nachricht senden.

PHP-Code für mehrere Dateianhänge

Hier ist ein PHP-Beispielcode das zeigt, wie man mehrere Dateien an eine E-Mail anhängt:

<code class="php">if ($_POST) {
    // Get the file names
    $files = $_FILES['csv_file']['name'];

    // Email fields
    $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
    foreach ($files as $file) {
        $file_data = file_get_contents($file);
        $file_data = chunk_split(base64_encode($file_data));
        $message .= "Content-Type: {\"application/octet-stream\"};\n" . " name=\"$file\"\n" . 
        "Content-Disposition: attachment;\n" . " filename=\"$file\"\n" . 
        "Content-Transfer-Encoding: base64\n\n" . $file_data . "\n\n";
        $message .= "--{$mime_boundary}\n";
    }

    // Send the email
    $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>

HTML-Formular zum Hochladen von Dateien

Dieser Code kann in Verbindung mit einem HTML-Formular verwendet werden, das dies ermöglicht Benutzer können mehrere Dateien auswählen:

<code class="html"><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></code>

Das enctype="multipart/form-data"-Attribut muss dem Formular hinzugefügt werden, um das Hochladen von Dateien zu ermöglichen.

Durch die Implementierung dieser Methoden können Sie dies tun Hängen Sie ganz einfach mehrere Dateien an eine E-Mail an und senden Sie sie über ein PHP-Skript.

Das obige ist der detaillierte Inhalt vonWie versende ich mit PHP mehrere Dateianhänge in E-Mails?. 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