За последние 24 часа нас посетили 23167 программистов и 1672 робота. Сейчас ищут 1694 программиста ...

функция отправляет файл, но он виден только в outlook 20xx

Тема в разделе "PHP для новичков", создана пользователем sf2015, 29 янв 2018.

  1. sf2015

    sf2015 Новичок

    С нами с:
    31 июл 2015
    Сообщения:
    6
    Симпатии:
    0
    Добрый день.
    При отправке письма с вложением, оно отлично приходит в microsoft outlook 2XXX (2003, 2007 и т.п.) А вот если посмотреть тоже письмо в почте рамблера, то там вложения не видно:

    ----57eb3ec73431b7e22271e8386959 8ed5 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: Quot-Printed Письмо с сайта xxxx.RU через форму обратной связи.

    Обращение ID: 20180128-213942-1517164782.2703
    Фамилия: Иванов
    Имя: Иван
    Отчество: Иванович
    Домашний адрес клиента: адрес
    Почта клиента: ivanov@ram.ru
    Тема вопроса: тема вопроса
    Сообщение: сообщение
    ----57eb3ec73431b7e22271e8386959 8ed5 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename = "888.jpg" MjIyMjIyMjIyMg== ----57eb3ec73431b7e22271e8386959 8ed5--


    Вот скрипт:
    -------------------------------- -
    <?php
    $mail_to_g = 'webinfo@xxx.ru';
    $mail_from_g = 'webinfo@xxx.ru';
    $type = 'html';
    $charset = 'UTF-8';


    /*
    $text1 = $_REQUEST['message'];
    $subject = 'xxx.ru';
    $replyto_f =$_REQUEST['replyto'];
    $replyto_i = $_REQUEST['replyto_i'];
    $replyto_o = $_REQUEST['replyto_o'];
    $replyto_adr = $_REQUEST['replyto_adr'];
    $mail_client = $_REQUEST['mail_client'];
    $replyto_tema = $_REQUEST['replyto_tema'];
    */


    $text1 = htmlspecialchars(stripslashes($_REQUEST['message']));
    $replyto_f = htmlspecialchars(stripslashes($_REQUEST['replyto']));
    $replyto_i = htmlspecialchars(stripslashes($_REQUEST['replyto_i']));
    $replyto_o = htmlspecialchars(stripslashes($_REQUEST['replyto_o']));
    $replyto_adr = htmlspecialchars(stripslashes($_REQUEST['replyto_adr']));
    $mail_client = htmlspecialchars(stripslashes($_REQUEST['mail_client']));
    $replyto_tema = htmlspecialchars(stripslashes($_REQUEST['replyto_tema']));



    $captcha = $_REQUEST['captcha'];
    $captcha_validation = $_REQUEST['captcha_validation'];

    if ($captcha != $captcha_validation)
    {
    header('Location: http://xxx.ru/?p=mail_check');
    exit();
    }


    //Фамилия
    if (!preg_match('/^([а-яА-ЯЁё \-]+)$/u',$replyto_f))
    {

    header('Location: http://xxx.ru/?p=mail_check');
    exit();
    }

    //Имя
    if (!preg_match('/^([а-яА-ЯЁё \-]+)$/u',$replyto_i))
    {

    header('Location: http://xxx.ru/?p=mail_check');
    exit();
    }
    //почта клиента
    if (!preg_match("/^(?:[a-z0-9]+(?:[-_.]?[a-z0-9]+)?@[a-z0-9_.-]+(?:\.?[a-z0-9]+)?\.[a-z]{2,5})$/i", $mail_client))
    {

    header('Location: http://xxx.ru/?p=mail_check');
    exit();
    }

    //тема - сообщение и галочка с персональными данными
    if ( empty($replyto_tema) or empty($text1) or !isset($_REQUEST['PERSONAL']) )
    {
    header('Location: http://xxx.ru/?p=mail_check');
    exit();
    }


    $ids=date("Ymd-His-").microtime(true);

    $msg = "Письмо с сайта xxx.RU через форму обратной связи.<br><br>";
    $msg = $msg."<b>Обращение ID:</b> $ids<br>";
    $msg = $msg."<b>Фамилия:</b> $replyto_f<br>";
    $msg = $msg."<b>Имя:</b> $replyto_i<br>";
    $msg = $msg."<b>Отчество:</b> $replyto_o<br>";
    $msg = $msg."<b>Домашний адрес клиента:</b> $replyto_adr<br>";
    $msg = $msg."<b>Почта клиента:</b> $mail_client<br>";
    $msg = $msg."<b>Тема вопроса:</b> $replyto_tema<br>";
    $msg = $msg."<b>Сообщение:</b> $text1<br>";


    //echo $msg;




    $text1 = '=?utf-8?B?'.base64_encode($text1).'?=';
    $replyto_f = '=?utf-8?B?'.base64_encode($replyto_f).'?=';
    $replyto_i = '=?utf-8?B?'.base64_encode($replyto_i).'?=';
    $replyto_o = '=?utf-8?B?'.base64_encode($replyto_o).'?=';
    $replyto_adr = '=?utf-8?B?'.base64_encode($replyto_adr).'?=';
    $mail_client = '=?utf-8?B?'.base64_encode($mail_client).'?=';
    $replyto_tema = '=?utf-8?B?'.base64_encode($replyto_tema).'?=';

    $picture = "";

    // Если поле выбора вложения не пустое - закачиваем его на сервер

    if (!empty($_FILES['filess']['tmp_name']))

    {

    // Закачиваем файл

    $path = $_FILES['filess']['name'];

    if (copy($_FILES['filess']['tmp_name'], $path)) $picture = $path;

    }


    $thm=$replyto_tema;

    $headers = "From: $mail_from_g\r\nReply-to: $mail_to_g\r\nContent-type: text/html; charset=utf-8\r\n";




    if(empty($picture))
    {
    if (!mail($mail_to_g, $thm, $msg, $headers))
    {
    header('Location: http://xxxx.ru/?p=mail_error');
    exit();
    }
    else
    {
    header('Location: http://xxx.ru/?p=mail_ok');
    exit();
    }
    }
    else //письмо свложением...................... ................................ .....
    {
    $fp = fopen($picture,"r");

    if (!$fp)

    {

    //Файл не может быть прочитан"
    header('Location: http://xxx.ru/?p=mail_error');
    exit();

    }

    $file = fread($fp, filesize($picture));

    fclose($fp);



    $boundary = "--".md5(uniqid(time())); // генерируем разделитель

    $headers = "From: $mail_from_g\r\nReply-to: $mail_to_g\r\nContent-type: text/html; charset=utf-8\r\n";

    $headers .="Content-Type: multipart/mixed; boundary=\"$boundary\"\n";

    $multipart .= "--$boundary\n";

    $kod = 'utf-8'; // или $kod = 'windows-1251';

    $multipart .= "Content-Type: text/html; charset=$kod\n";

    $multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n";

    $multipart .= "$msg\n\n";



    $message_part = "--$boundary\n";

    $message_part .= "Content-Type: application/octet-stream\n";

    $message_part .= "Content-Transfer-Encoding: base64\n";

    $message_part .= "Content-Disposition: attachment; filename = \"".$path."\"\n\n";

    $message_part .= chunk_split(base64_encode($file))."\n";

    $multipart .= $message_part."--$boundary--\n";

    if(!mail($mail_to_g, $thm, $multipart, $headers))

    {
    header('Location: http://xxx.ru/?p=mail_error');
    exit();

    }
    else
    {
    header('Location: http://xxx.ru/?p=mail_ok');
    exit();
    }

    }//письмо с вложением
    ?>
     
  2. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.585
    Симпатии:
    1.762
    1. Оформляй код через кнопку </>.
    2. Что это за порнография?
    3. Для отправки писем с вложениями лучше использовать готовые разработки, например https://github.com/PHPMailer/PHPMailer