>백엔드 개발 >PHP 튜토리얼 >PHP에서 이메일에 여러 파일을 첨부하는 방법은 무엇입니까?

PHP에서 이메일에 여러 파일을 첨부하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-03 03:35:31712검색

How to Attach Multiple Files to Emails in PHP?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.