Heim >Backend-Entwicklung >PHP-Tutorial >Wie hänge ich in PHP mehrere Dateien an E-Mails an?

Wie hänge ich in PHP mehrere Dateien an E-Mails an?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-03 03:35:31717Durchsuche

How to Attach Multiple Files to Emails in PHP?

Anhängen mehrerer Dateien an E-Mails in PHP

Beim Versenden von E-Mails ist es oft notwendig, Anhänge beizufügen, egal, ob es sich um eine einzelne oder mehrere Dateien handelt. Der Code, den Sie zum Senden eines einzelnen Anhangs bereitgestellt haben, kann geändert werden, um mehrere Dateien aufzunehmen.

Die MIME-Grenze verstehen

Um mehrere Dateien zu senden, müssen Sie die verwenden MIME-Grenze, die die verschiedenen Teile der E-Mail (Text, Anhänge) trennt. Mithilfe einer zufälligen Zeichenfolge wird eine eindeutige Grenze generiert, um sicherzustellen, dass der E-Mail-Leser die Teile richtig unterscheiden kann.

Vorbereitung mehrteiliger Nachrichten

Zur Vorbereitung der mehrteiligen Nachricht Beginnen Sie mit dem Standardinhalt der Textnachricht und geben Sie die MIME-Version und die Abschnittsgrenze an.

Anhangsbehandlung

Für jede Datei, die angehängt werden soll, müssen Sie lesen den Inhalt der Datei mit fopen() und kodieren Sie ihn mit base64_encode(). Die Kopfzeile des Anhangsabschnitts enthält Informationen wie Dateityp, Name und Übertragungskodierung.

Zusammenstellen der E-Mail

Die endgültige E-Mail-Nachricht wird durch Kombinieren des Textinhalts zusammengestellt und die Anhangsabschnitte, jeweils durch die MIME-Grenze getrennt.

Beispielimplementierung

Der folgende Code veranschaulicht, wie man mit PHP mehrere Dateien an eine E-Mail anhängt:

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

Fazit

Durch die Verwendung mehrerer MIME-Grenzen innerhalb der E-Mail-Nachricht ist es möglich, mit PHP mehrere Dateien in einer einzigen E-Mail anzuhängen und zu versenden. Dieser Code hilft Ihnen bei der Optimierung Ihrer E-Mail-Kommunikation, indem er Ihnen ermöglicht, verschiedene Dateien auf einmal zu teilen.

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