ホームページ >バックエンド開発 >PHPチュートリアル >PHP で複数のファイルをメールに添付するにはどうすればよいですか?

PHP で複数のファイルをメールに添付するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-03 03:35:31716ブラウズ

How to Attach Multiple Files to Emails in PHP?

PHP で複数のファイルをメールに添付する

メールを送信するとき、単一のファイルでも複数のファイルでも添付ファイルを含める必要があることがよくあります。単一の添付ファイルを送信するために指定したコードは、複数のファイルに対応できるように変更できます。

MIME 境界について

複数のファイルを送信するには、 MIME 境界。電子メールのさまざまな部分 (テキスト、添付ファイル) を区切ります。ランダムな文字列を使用して一意の境界が生成され、電子メール リーダーがパートを適切に区別できるようになります。

マルチパート メッセージの準備

マルチパートを準備するにはメッセージでは、標準のテキスト メッセージ コンテンツで始めて、MIME バージョンとセクション境界を指定します。

添付ファイルの処理

添付するファイルごとに、次の内容を読み取る必要があります。 fopen() を使用してファイルの内容を取得し、base64_encode() を使用してエンコードします。添付ファイル セクションのヘッダーには、ファイル タイプ、名前、転送エンコードなどの情報が含まれます。

電子メールの組み立て

最終的な電子メール メッセージは、テキスト コンテンツを結合することによって組み立てられます。

実装例

次のコードは、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 を使用して 1 つの電子メールに複数のファイルを添付して送信することができます。このコードは、さまざまなファイルを一度に共有できるようにすることで、電子メールでのコミュニケーションを効率化するのに役立ちます。

以上がPHP で複数のファイルをメールに添付するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。