Maison >développement back-end >tutoriel php >Comment joindre plusieurs fichiers à des e-mails en PHP ?

Comment joindre plusieurs fichiers à des e-mails en PHP ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-03 03:35:31709parcourir

How to Attach Multiple Files to Emails in PHP?

Joindre plusieurs fichiers à des e-mails en PHP

Lors de l'envoi d'e-mails, il est souvent nécessaire d'inclure des pièces jointes, qu'il s'agisse d'un seul fichier ou de plusieurs. Le code que vous avez fourni pour envoyer une seule pièce jointe peut être modifié pour accueillir plusieurs fichiers.

Comprendre la limite MIME

Pour envoyer plusieurs fichiers, vous devez utiliser le Limite MIME, qui sépare les différentes parties de l'email (texte, pièces jointes). Une limite unique est générée à l'aide d'une chaîne aléatoire, garantissant que le lecteur de courrier électronique peut correctement différencier les parties.

Préparation du message en plusieurs parties

Pour préparer le message en plusieurs parties message, commencez par le contenu du message textuel standard et spécifiez la version MIME et la limite de la section.

Gestion des pièces jointes

Pour chaque fichier à joindre, vous devez lire le contenu du fichier en utilisant fopen() et encodez-le en utilisant base64_encode(). L'en-tête de la section des pièces jointes comprend des informations telles que le type de fichier, le nom et l'encodage du transfert.

Assemblage de l'e-mail

Le message électronique final est assemblé en combinant le contenu textuel et les sections de pièces jointes, chacune séparée par la limite MIME.

Exemple de mise en œuvre

Le code suivant illustre comment joindre plusieurs fichiers à un e-mail à l'aide de PHP :

<code class="php">// Prepare the email fields
$to = "recipient@example.com";
$from = "sender@example.com";
$subject = "Email with Attachments";
$message = "This email contains multiple attachments.";
$headers = "From: $from";

// Generate a random boundary
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

// Prepare the 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 attachments
$files = ["file1.pdf", "file2.rar"];
foreach ($files as $file) {
    $file_content = file_get_contents($file);
    $encoded_content = chunk_split(base64_encode($file_content));

    $message .= "--{$mime_boundary}\n" .
        "Content-Type: application/octet-stream;\n" .
        " name=\"$file\"\n" .
        "Content-Disposition: attachment;\n" .
        " filename=\"$file\"\n" .
        "Content-Transfer-Encoding: base64\n\n" .
        $encoded_content . "\n\n";
}

// Complete the message
$message .= "--{$mime_boundary}--\n";

// Headers for attachment
$headers .= "\nMIME-Version: 1.0\n" .
    "Content-Type: multipart/mixed;\n" .
    " boundary=\"{$mime_boundary}\"";

// Send the email
if (mail($to, $subject, $message, $headers)) {
    echo "Email sent with attachments.";
} else {
    echo "Failed to send email.";
}</code>

Conclusion

En utilisant plusieurs limites MIME dans le message électronique, il est possible de joindre et d'envoyer plusieurs fichiers dans un seul e-mail à l'aide de PHP. Ce code vous aidera à rationaliser votre communication par courrier électronique en vous permettant de partager différents fichiers en une seule fois.

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