Maison >développement back-end >tutoriel php >Comment envoyer plusieurs pièces jointes dans des e-mails à l'aide de PHP ?

Comment envoyer plusieurs pièces jointes dans des e-mails à l'aide de PHP ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-02 18:21:02366parcourir

How to Send Multiple File Attachments in Emails Using PHP?

Comment joindre plusieurs fichiers à un e-mail en PHP

En PHP, vous pouvez joindre plusieurs fichiers à un e-mail et les envoyer simultanément. Ceci est utile pour partager des documents volumineux ou importants.

Format MIME multipart

Pour joindre plusieurs fichiers à un e-mail, vous devez utiliser le format MIME multipart. MIME (MultiPurpose Internet Mail Extensions) vous permet d'envoyer différents types de données dans un seul message électronique.

Code PHP pour plusieurs pièces jointes

Voici un exemple de code PHP qui montre comment joindre plusieurs fichiers à un e-mail :

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

Formulaire HTML pour le téléchargement de fichiers

Ce code peut être utilisé conjointement avec un formulaire HTML qui permet aux utilisateurs de sélectionner plusieurs fichiers :

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

L'attribut enctype="multipart/form-data" doit être ajouté au formulaire pour permettre le téléchargement de fichiers.

En implémentant ces méthodes, vous pouvez Joignez facilement plusieurs fichiers à un e-mail et envoyez-les à partir d'un script PHP.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn