За последние 24 часа нас посетили 17524 программиста и 1313 роботов. Сейчас ищут 1145 программистов ...

Отправка почты

Тема в разделе "Работа с почтой", создана пользователем Johny_PHP, 25 янв 2011.

  1. Johny_PHP

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

    С нами с:
    26 окт 2010
    Сообщения:
    34
    Симпатии:
    0
    Всем доброго времени. Есть функция отправки почты с вложениями, но не получается приучить тело делать переносы строки \n.
    PHP:
    1.   $path = 'usr/file.txt';
    2.   $picture = $path;
    3.   $thm = "Тема";
    4.   $msg = "Текст\nПодпись";
    5.   $mail_to = "mail@mail.ru";
    6.  
    7.   send_mail($mail_to, $thm, $msg, $picture);
    8.  
    9.   function send_mail($mail_to, $thema, $html, $path)  
    10.  
    11.   {
    12.     if ($path)
    13.     {  
    14.         $fp = fopen($path,"rb");  
    15.         if (!$fp)  
    16.         {
    17.            print "Cannot open file";  
    18.            exit();  
    19.         }  
    20.         $file = fread($fp, filesize($path));  
    21.         fclose($fp);  
    22.          }  
    23.     $name = 'file.txt'; // в этой переменной надо сформировать им¤ файла (без вс¤кого пути)  
    24.     $EOL = "\r\n"; // ограничитель строк, некоторые почтовые сервера требуют \n - подобрать опытным путЄм
    25.     $boundary     = "--".md5(uniqid(time()));  // люба¤ строка, которой не будет ниже в потоке данных.  
    26.     $headers    = "MIME-Version: 1.0;$EOL";  
    27.     $headers   .= "Content-Type: multipart/mixed; boundary=\"$boundary\"$EOL";  
    28.     $headers   .= "from@mail.ru";  
    29.     $multipart  = "--$boundary$EOL";  
    30.     $multipart .= "Content-Type: text/html; charset=windows-1251$EOL";  
    31.     $multipart .= "Content-Transfer-Encoding: base64$EOL";  
    32.     $multipart .= $EOL; // раздел между заголовками и телом html-части
    33.     $multipart .= chunk_split(base64_encode($html));  
    34.     $multipart .=  "$EOL--$boundary$EOL";  
    35.     $multipart .= "Content-Type: application/octet-stream; name=\"$name\"$EOL";  
    36.     $multipart .= "Content-Transfer-Encoding: base64$EOL";  
    37.     $multipart .= "Content-Disposition: attachment; filename=\"$name\"$EOL";  
    38.     $multipart .= $EOL; // раздел между заголовками и телом прикрепленного файла
    39.     $multipart .= chunk_split(base64_encode($file));  
    40.     $multipart .= "$EOL--$boundary--$EOL";  
    41.  
    42.     if(!mail($mail_to, $thema, $multipart, $headers))  
    43.     {
    44.        return False;           //если не письмо не отправлено
    45.     }  
    46.     else
    47.     {
    48.     return True;  // если письмо отправлено
    49.     }  
    50.    
    51.     exit;  
    52.   }
    Подскажите, пожалуйста, как ещё это можно сделать. Спасибо.
    ЗЫ:серв unix