За последние 24 часа нас посетили 17552 программиста и 1310 роботов. Сейчас ищут 1049 программистов ...

Вложение pdf

Тема в разделе "Работа с почтой", создана пользователем sergeibr, 16 окт 2014.

  1. sergeibr

    sergeibr Новичок

    С нами с:
    16 окт 2014
    Сообщения:
    3
    Симпатии:
    0
    Здраствуйте. Мне нужно отправить pdf на почту. Вот мой код
    Код (Text):
    1. $to = $_POST['email'];
    2. $subject = 'portfolio item';
    3. $message = 'You choose portfolio';
    4.  
    5. $filename = '1.pdf';
    6.  
    7. $filepath = ($_SERVER['DOCUMENT_ROOT'].'/wp-content/plugins/portfolio-item-plus/1.pdf');
    8.  
    9. $boundary = "--".md5(uniqid(time()));
    10.  
    11. $mailheaders = "MIME-Version: 1.0;\r\n";
    12. $mailheaders .="Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
    13.  
    14. $mailheaders .= "From:<megarazrabot4ik.com>\r\n";
    15. $mailheaders .= "Reply-To: reply-to@megarazrabot4ik.com\r\n";
    16.  
    17. $multipart = "--$boundary\r\n";
    18. $multipart .= "Content-Type: text/html; charset=windows-1251\r\n";
    19. $multipart .= "Content-Transfer-Encoding: base64\r\n";    
    20. $multipart .= '\r\n';
    21. $multipart .= chunk_split(base64_encode(iconv("utf8", "windows-1251", $message)));
    22.  
    23. $fp = fopen($filepath,"r");
    24.         if (!$fp)
    25.         {
    26.             print "not22";
    27.             exit();
    28.         }
    29. $file = fread($fp, filesize($filepath));
    30. fclose($fp);
    31.  
    32. $message_part = "\r\n--$boundary\r\n";
    33. $message_part .= "Content-Type: application/pdf; name=\"$filename\"\r\n";  
    34. $message_part .= "Content-Transfer-Encoding: base64\r\n";
    35. $message_part .= "Content-Disposition: attachment; filename=\"$file\"\r\n";
    36. $message_part .= '\r\n';
    37. $message_part .= chunk_split(base64_encode($file));
    38. $message_part .= "\r\n--$boundary--\r\n";
    39.  
    40. $multipart .= $message_part;
    41.  
    42. mail($to,$subject,$multipart,$mailheaders);
    он работает не корректно. На почту приходит письмо с вложением, вложение нужного формата, но при попытки открытии выдает ошибку что-то типа "письмо было переслано по email и не докодировано" . ПОдскажите в чём проблема. За ответ буду благодарен
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    в одинарных кавычках это просто бэкслеш-ар-бэкслеш-эн
    пустое имя
    зачем ";"?

    мне немного лениво выполнять этот код у себя на сервере. покажите исходник письма приходящего на почту. вместо вашего pdf запихните текстовик с парой букв. по исходнику быстрее понять в каком моменте композиция неверная.
     
  3. sergeibr

    sergeibr Новичок

    С нами с:
    16 окт 2014
    Сообщения:
    3
    Симпатии:
    0
    Спасибо тебе большое)) Два дня бился с этой проблемой да всё без толку))) Проблема оказалась в экранировании символов. Там нужно было двойные кавычки поставить вместо одинарных