Как отправить PDF-файл, созданный с помощью jspdf, по электронной почте? - PullRequest
0 голосов
/ 28 мая 2020

Здравствуйте, пожалуйста, мне нужна ваша помощь

Я работаю над проектом, моя цель - создать файл pdf и отправить его по электронной почте. Мне удалось сгенерировать файл pdf и сохранить его локально, на этот раз я хочу отправить его по электронной почте, поэтому я отправил его по ajax на sendmail. php Мне удалось отправить электронное письмо, но я получить его без файла pdf.

вот мой код

JS:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Test pdf</title>



    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.3/jspdf.debug.js"></script>

</head>

<body>

    <button id="exportButton" type="button" onclick="downloadpdf()">Export as PDF</button>

    <script>
        function downloadpdf() {
            html2canvas(document.body, {
                onrendered: function(canvas) {
                    var imgData = canvas.toDataURL("image/jpeg");
                    var a = document.createElement('a');

                    var doc = new jsPDF('p', 'mm');
                    doc.addImage(imgData, 'JPEG', 15, 40, 180, 160);


                    var pdf = btoa(doc.output());
                    $.ajax({
                        method: "POST",
                        url: "sendmail.php",
                        data: {
                            data: pdf
                        },
                    }).done(function(data) {
                        console.log(data);
                    });


                }
            });
        }
    </script>



</body>

</html>

PHP:

<?php

function MailWithAttachment($to, $subject, $message, $senderMail, $senderName, $files){

$from = $senderName." <".$senderMail.">"; 
$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 attachments
if(count($files) > 0){
    for($i=0;$i<count($files);$i++){
        if(is_file($files[$i])){
            $message .= "--{$mime_boundary}\n";
            $fp =    @fopen($files[$i],"rb");
            $data =  @fread($fp,filesize($files[$i]));
            @fclose($fp);
            $data = chunk_split(base64_encode($data));
            $message .= "Content-Type: application/octet-stream; name=\"".basename($files[$i])."\"\n" . 
            "Content-Description: ".basename($files[$i])."\n" .
            "Content-Disposition: attachment;\n" . " filename=\"".basename($files[$i])."\"; size=".filesize($files[$i]).";\n" . 
            "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n";
        }
    }
}
$message .= "--{$mime_boundary}--";
$returnpath = "-f" . $senderMail;

//send email
$mail = @mail($to, $subject, $message, $headers, $returnpath); 

//function return true, if email sent, otherwise return fasle
if($mail){ return TRUE; } else { return FALSE; }
}


if(!empty($_POST['data'])){



//email variables
$to = 'name@gmail.com';
$from = 'name@host.com';
$from_name = 'Name Support';


//attachment files path array
// $file = base64_decode($_POST['data']);

$file = base64_decode($_POST['data']);
// print_r($data);

$subject = 'PHP Email with attachment'; 
$html_content = '<h1>PHP Email with attachment</h1>';

//call MailWithAttachment() function and pass the required arguments
$send_email = MailWithAttachment($to,$subject,$html_content,$from,$from_name,$file);

//print message after email sent
echo $send_email?"<h1> Mail Sent</h1>":"<h1> Mail not SEND</h1>";

} else {
echo "No Data Found";
} 

?>

как я могу прикрепить файл в ожидании вашей помощи, большое спасибо

...