Guest User

Guest User

  • Tech Writer
  • 2.1k
  • 472.3k

Sending multiple attachment by using php mail function

Mar 7 2023 1:32 PM

Hi Team

I need help, how do i send attachments as pdf to the mail recepient? My code is not sending attachment but only show total attachment size from the email. 

// logic

<?php
function multi_attach_mail($to, $subject, $message, $senderEmail, $senderName, $received_email_send = array()){ 
    
    // Sender info  
    $from = $senderName." <".$senderEmail.">";  
    $headers = "From: $from"; 
 
    // Boundary  
    $semi_rand = md5(time());  
    $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";  
 
    // Headers for attachment  
    $headers .= "\nMIME-Version: 1.0\n" . 
    "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\"";  
 
    // Multipart boundary  
    $message = "--{$mime_boundary}\n" . "Content-Type: text/html; charset=\"UTF-8\"\n" . 
    "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n";  
 
    // Preparing attachment 
    if(!empty($received_email_send)){ 
        for($i=0;$i<count($received_email_send);$i++){ 
            if(is_file($received_email_send[$i])){ 
                $file_name = basename($received_email_send[$i]); 
                $file_size = filesize($received_email_send[$i]); 
                 
                $message .= "--{$mime_boundary}\n"; 
                $fp =    @fopen($received_email_send[$i], "rb"); 
                $data =  @fread($fp, $file_size); 
                @fclose($fp); 
                $data = chunk_split(base64_encode($data)); 
                $message .= "Content-Type: application/octet-stream; name=\"".$file_name."\"\n" .  
                "Content-Description: ".$file_name."\n" . 
                "Content-Disposition: attachment;\n" . " filename=\"".$file_name."\"; size=".$file_size.";\n" .  
                "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n"; 
            } 
        } 
    } 
     
    $message .= "--{$mime_boundary}--"; 
    $returnpath = "-f" . $senderEmail; 
     
    // Send email 
    $mail = mail($to, $subject, $message, $headers, $returnpath);  
     
    // Return true if email sent, otherwise return false 
    if($mail){ 
        return true; 
    }else{ 
        return false; 
    } 
}


// Email configuration 
$to = '[email protected]'; 
$from = '[email protected]'; 
$fromName = 'ACI Finance Pty Ltd'; 
 
$subject = 'Application Loan with ACI Finance Pty Ltd';  
 
// Attachment files 
$received_email_send = array( 
    'received_email_send/bankstatement.pdf', 
    'received_email_send/id.pdf',
    'received_email_send/payslip.pdf'
); 
 
$htmlContent = ' 
    <h3></h3> 
    <h4></h4> 
    <p><b>Total Attachments:</b> '.count($received_email_send).'</p>'; 
 
// Call function and pass the required arguments 
$sendEmail = multi_attach_mail($to, $subject, $htmlContent, $from, $fromName, $received_email_send); 
 
// Email sending status 
if($sendEmail){ 
    echo 'The email is sent successfully.'; 
}else{ 
    echo 'Email sending failed!'; 
}
?>

 


Answers (2)