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!