在 PHP 中将多个文件附加到电子邮件
发送电子邮件时,通常需要包含附件,无论是单个文件还是多个文件。您提供的用于发送单个附件的代码可以修改为容纳多个文件。
了解 MIME 边界
要发送多个文件,您必须使用MIME 边界,分隔电子邮件的不同部分(文本、附件)。使用随机字符串生成唯一边界,确保电子邮件阅读器可以正确区分各个部分。
多部分消息准备
准备多部分消息,以标准文本消息内容开头,并指定 MIME 版本和节边界。
附件处理
对于要附加的每个文件,您需要阅读使用 fopen() 读取文件内容并使用 base64_encode() 对其进行编码。附件部分标题包括文件类型、名称和传输编码等信息。
组装电子邮件
通过组合文本内容组装最终的电子邮件消息和附件部分,每个部分均由 MIME 边界分隔。
示例实现
以下代码演示了如何使用 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>
结论
通过在电子邮件中使用多个 MIME 边界,可以使用 PHP 在一封电子邮件中附加和发送多个文件。此代码将允许您一次性共享各种文件,从而帮助您简化电子邮件通信。
以上是如何在 PHP 中将多个文件附加到电子邮件?的详细内容。更多信息请关注PHP中文网其他相关文章!