За последние 24 часа нас посетили 21922 программиста и 995 роботов. Сейчас ищут 673 программиста ...

mail.ru - крякозябры

Тема в разделе "Работа с почтой", создана пользователем Трифонов Серега, 8 фев 2018.

  1. Трифонов Серега

    С нами с:
    1 авг 2017
    Сообщения:
    10
    Симпатии:
    0
    Здравствуйте, помогите разобраться, отправляю скриптом сообщения с файлом, везде сообщения выглядит корректно кроме майл ру, там приходят крякозябры, но файл открывается нормально.
    Как избавится от крякозябров? вот код которым отсылаю сообщения.
    Также я прикрепил фото с майл ру


    Код (Text):
    1. $filename = $rezz98[1].'.txt'; //Имя файла для прикрепления
    2.   $to = $_POST['email']; //Кому
    3.   $from = $email; //От кого
    4.   $subject = "тема"; //Тема
    5.   $message = "сообщение"; //Текст письма
    6.   $boundary = "---"; //Разделитель
    7.   /* Заголовки */
    8.   $headers = "From: $from\nReply-To: $from\n";
    9.   $headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"";
    10.   $body = "--$boundary\n";
    11.   /* Присоединяем текстовое сообщение */
    12.   $body .= "Content-type: text/html; charset='utf-8'\n";
    13.   $body .= "Content-Transfer-Encoding: quoted-printablenn";
    14.   $body .= "Content-Disposition: attachment; filename==?utf-8?B?".base64_encode($filename)."?=\n\n";
    15.   $body .= $message."\n";
    16.   $body .= "--$boundary\n";
    17.   $file = fopen($filename, "r"); //Открываем файл
    18.   $text = fread($file, filesize($filename)); //Считываем весь файл
    19.   fclose($file); //Закрываем файл
    20.   /* Добавляем тип содержимого, кодируем текст файла и добавляем в тело письма */
    21.   $body .= "Content-Type: application/octet-stream; name==?utf-8?B?".base64_encode($filename)."?=\n";
    22.   $body .= "Content-Transfer-Encoding: base64\n";
    23.   $body .= "Content-Disposition: attachment; filename==?utf-8?B?".base64_encode($filename)."?=\n\n";
    24.   $body .= chunk_split(base64_encode($text))."\n";
    25.   $body .= "--".$boundary ."--\n";
    26.   mail($to, $subject, $body, $headers); //Отправляем письмо
     

    Вложения:

  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.822
    Симпатии:
    736
    Адрес:
    Татарстан
    избитая тема.... пользуйтесь готовыми либами для отправки почты - SwiftMail, PHPMailer
     
    Fell-x27 нравится это.
  3. Трифонов Серега

    С нами с:
    1 авг 2017
    Сообщения:
    10
    Симпатии:
    0
    Может в этот код можно какой небуть заголовок в headers добавить и он заработает?
     
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.822
    Симпатии:
    736
    Адрес:
    Татарстан
    может .. .но кому это нужно, когда есть готовые библиотеки? Может у вас сам php файл не в кодировке utf8, а может данные что приходят не в ней ... причин может быть много.... опять же где гарантии - а я даже что-то уверен вот на 99%, что таким макаром письма будут уходить не на все почтовые адреса, например на gmail скорее всего не будут даже доходить ))))
     
  5. Трифонов Серега

    С нами с:
    1 авг 2017
    Сообщения:
    10
    Симпатии:
    0
    Можно тогда пример кода с отправкой письма с вложением, а то я в php не силен.
     
  6. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Как сделать отправку письма с вложением?
    --- Добавлено ---
    Первое, что бросилось в глаза, – нестандартный разделитель строк. Хотя в линухе иногда такое прокатывает, когда выполняется автозамена "\n"->"\r\n".
    --- Добавлено ---
    Код (Text):
    1. $body .= "Content-Transfer-Encoding: quoted-printablenn";
    блин, обратитесь к специалисту, если совсем не сечете, что пишете.
    --- Добавлено ---
    P.S. "блин" – это от форума, у меня было резче.
     
  7. Трифонов Серега

    С нами с:
    1 авг 2017
    Сообщения:
    10
    Симпатии:
    0
    Спасибо за ссылку, все работает!