Отправка письма с вложенным файлом jspdf

Добрый вечер. Помогите решить проблему. Я создал тесты, после прохождения которых генерируется файл pdf (с помощью jsPDF) с результатом ответов. Внимание вопрос: как сделать так что бы этот файл отправлялся пользователю на почтовый ящик после того как он введёт свой email. (можно ли это сделать через Contact Form 7)

 

Пробовал http://stackoverflow.com/questions/33994282/html2canvas-and-jspdf-send-generated-pdf-as-email-attachment 

Но так отправляет только заголовок , а сам файл не отсылается

Добавить Комментарий

    Стандартная функция отправки сообщений в вордпресс может отправлять файлы:

    // файл
    $attachments = array(WP_CONTENT_DIR . '/uploads/file.zip');
    // отправка
     wp_mail( $to, $subject, $message, $headers = '', $attachments = array() );
     

     

    Вы используете ее для отправки?

    Добавить Комментарий

    Я реализовал  так:

    Генерирую pdf файл:

    var doc = new jsPDF();

    doc.fromHTML($('.testdiv').get(0), 10, 20, {

    'width': 185

    });

    var pdf = btoa(doc.output());

    $.post("email.php", { data: pdf }, function (response,status) {

    console.log(response);

    });



    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 = 'мой email';
    $from = 'from-email@email.com';
    $from_name = 'PDF FIle';

    //attachment files path array
    $file = base64_decode($_POST['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"; }

    Так вот на почту приходит только:
    $html_content = '<h1>PHP Email with attachment</h1>';



    А самого файла нет. Что я делаю не так?

    можете после строки:

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

    добавить:

    
    var_dump($file);
    
    

    что бы посмотреть что у вас содержится в переменной. Возможно у вас не правильный путь к файлу. Проверьте доступен файл по ссылке которая выведется после отправки или нет.

    в 13.02.2017.
    Добавить Комментарий

    Ваш ответ

    Размещая свой ответ, вы соглашаетесь с правилами сайта.