За последние 24 часа нас посетили 15011 программистов и 1769 роботов. Сейчас ищут 1524 программиста ...

Проблемы с кирилицей при аттаче

Тема в разделе "Работа с почтой", создана пользователем Exarchik, 28 май 2010.

  1. Exarchik

    Exarchik Активный пользователь

    С нами с:
    25 янв 2010
    Сообщения:
    28
    Симпатии:
    0
    Добрый день Господа, пишу, потому что уже 3-и сутки проковырял весь интернет, не могу найти причину своих страданий... Меньше лирики, ближе к сабжу.

    Есть функция отправки мыла с аттачем (рассылка прайсов). Все работает отлично, кроме одного. Если во вложении появляется кирилица, весь последующий текст письма превращается в фарш...

    Код (Text):
    1. function send_mime_mail_with_attachment($name_from, // имя отправителя
    2.                         $email_from, // email отправителя
    3.                         $name_to, // имя получателя
    4.                         $email_to, // email получателя
    5.                         $data_charset, // кодировка переданных данных
    6.                         $send_charset, // кодировка письма
    7.                         $subject, // тема письма
    8.                         $body, // текст письма
    9.                         $link_hash, // линк на хэш получателя для отписки.
    10.                         $attachment // имя отправляемого файл
    11.                         ) {
    12.   $f = fopen($attachment,"rb");
    13.   $to = mime_header_encode($name_to, $data_charset, $send_charset)
    14.                  . ' <' . $email_to . '>';
    15.   $subject = mime_header_encode($subject, $data_charset, $send_charset);
    16.   //$body = mime_header_encode($body, $data_charset, $send_charset);
    17.   $from =  mime_header_encode($name_from, $data_charset, $send_charset)
    18.                      .' <' . $email_from . '>';
    19.   $un  = strtoupper(uniqid(time()));
    20.   if($data_charset != $send_charset) {
    21.     $body = iconv($data_charset, $send_charset, $body);
    22.   }
    23.   $headers  = "From: $from\n";
    24.   //$headers .= "To: $to\n";
    25.  // $headers .= "Subject: $subject\n";
    26.   $headers .= "X-Mailer: PHPMail Tool\n";  
    27.   $headers .= "Reply-To: $from\n";
    28.   $headers .= "Mime-Version: 1.0\n";
    29.   $headers .= "Content-type: multipart/mixed; charset=$send_charset";
    30.   $headers .= "boundary=\"----------".$un."\"\n\n";
    31.  
    32.  //адские муки
    33.  
    34.     $zag       = "------------".$un;
    35.     $zag      .= "\nContent-Type:text/html; charset=$send_charset;\r\n";
    36.     $zag      .= "Content-Transfer-Encoding:8bit; \n\n";
    37.     $zag      .= "<strong>$body </strong>\n &nbsp;<br> - &nbsp; otkazatsa ot rassylky - <a href='$link_hash'> $link_hash </a>\n\n";
    38.  
    39.  //адские муки
    40.  
    41.     $zag      .= "------------".$un."\n";
    42.     $zag      .= "Content-Type: application/octet-stream;";
    43.     $zag      .= "name=\"".basename($attachment)."\"\n";
    44.     $zag      .= "Content-Transfer-Encoding:base64;\n";
    45.     $zag      .= "Content-Disposition:attachment;";
    46.     $zag      .= "filename=\"".basename($attachment)."\"\n\n";
    47.     echo $zag;
    48.     $zag      .= chunk_split(base64_encode(fread($f,filesize($attachment))))."\n";
    49.     //$body .= $zag;
    50. return mail($to, $subject, $zag, $headers);
    51. }
    место мучений выделил "адскими муками". Временно текст заменил транслитом.
     
  2. Exarchik

    Exarchik Активный пользователь

    С нами с:
    25 янв 2010
    Сообщения:
    28
    Симпатии:
    0
    а ну вообщем пошло оно все в глубины фрактального ануса. PHPMailer спас положение, чего и Вам желаю ))