What are best practices for handling file attachments in PHP emails to prevent corruption?

File attachments in PHP emails can become corrupted if not handled properly. To prevent this, it is important to encode the file attachment using base64 encoding before attaching it to the email. This ensures that the file is transmitted correctly without any corruption.

// Example code snippet for handling file attachments in PHP emails to prevent corruption

$file_path = '/path/to/attachment.pdf';
$file_name = 'attachment.pdf';
$file_type = 'application/pdf';

$file_content = file_get_contents($file_path);
$encoded_content = chunk_split(base64_encode($file_content));

$boundary = md5(uniqid(time()));

$headers = "From: sender@example.com\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"".$boundary."\"\r\n";

$body = "--".$boundary."\r\n";
$body .= "Content-Type: ".$file_type."; name=\"".$file_name."\"\r\n";
$body .= "Content-Disposition: attachment; filename=\"".$file_name."\"\r\n";
$body .= "Content-Transfer-Encoding: base64\r\n";
$body .= "\r\n";
$body .= $encoded_content."\r\n";
$body .= "--".$boundary."--";

$to = 'recipient@example.com';
$subject = 'Email with attachment';
$message = 'Please find the attached file';

mail($to, $subject, $message, $headers, '-f sender@example.com');