Send attachments with PHP Mail()?

前端 未结 14 2447
北恋
北恋 2020-11-21 04:46

I need to send a pdf with mail, is it possible?

$to = \"xxx\";
$subject = \"Subject\" ;
$message = \'Example message with html\';
$header         


        
14条回答
  •  攒了一身酷
    2020-11-21 05:05

    This works for me. It also attaches multiple attachments too. easily

     0) { //if attachment exists
            //header
            $headers = "MIME-Version: 1.0\r\n";
            $headers .= "From:" . $from_email . "\r\n";
            $headers .= "Reply-To: " . $sender_email . "" . "\r\n";
            $headers .= "Content-Type: multipart/mixed; boundary = $boundary\r\n\r\n";
    
            //message text
            $body = "--$boundary\r\n";
            $body .= "Content-Type: text/plain; charset=ISO-8859-1\r\n";
            $body .= "Content-Transfer-Encoding: base64\r\n\r\n";
            $body .= chunk_split(base64_encode($sender_message));
    
            //attachments
            for ($x = 0; $x < $file_count; $x++) {
                if (!empty($attachments['name'][$x])) {
    
                    if ($attachments['error'][$x] > 0) { //exit script and output error if we encounter any
                        $mymsg = array(
                            1 => "The uploaded file exceeds the upload_max_filesize directive in php.ini",
                            2 => "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form",
                            3 => "The uploaded file was only partially uploaded",
                            4 => "No file was uploaded",
                            6 => "Missing a temporary folder");
                        die($mymsg[$attachments['error'][$x]]);
                    }
    
                    //get file info
                    $file_name = $attachments['name'][$x];
                    $file_size = $attachments['size'][$x];
                    $file_type = $attachments['type'][$x];
    
                    //read file 
                    $handle = fopen($attachments['tmp_name'][$x], "r");
                    $content = fread($handle, $file_size);
                    fclose($handle);
                    $encoded_content = chunk_split(base64_encode($content)); //split into smaller chunks (RFC 2045)
    
                    $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 .= "X-Attachment-Id: " . rand(1000, 99999) . "\r\n\r\n";
                    $body .= $encoded_content;
                }
            }
        } else { //send plain email otherwise
            $headers = "From:" . $from_email . "\r\n" .
                    "Reply-To: " . $sender_email . "\n" .
                    "X-Mailer: PHP/" . phpversion();
            $body = $sender_message;
        }
    
        $sentMail = @mail($recipient_email, $subject, $body, $headers);
        if ($sentMail) { //output success or failure messages
            die('Thank you for your email');
        } else {
            die('Could not send mail! Please check your PHP mail configuration.');
        }
    }
    ?>
    

提交回复
热议问题