21

Re: [Вирішено]csv+mail()

swift mailer спробуйте цю лібу для відправки пошти) можна атачити файли без проблем. ;)

22

Re: [Вирішено]csv+mail()

Вцілому вирішив без ліб.

Якщо може в кого виникне та ж проблема, код:

Прихований текст
$to  = "<mail@gmail.com>" ;     
$subject = "Тема листа"; 

$message ="Текст листа"; 
$filename = "$file_name.csv";
$filepath = "./".$filename;

    $boundary = md5(uniqid(time())); 
     
    $mailheaders .= "From: Від кого <info@mail.com>\r\n"; 
    $mailheaders .= "Reply-To: info1@mail.com\r\n";    
    $mailheaders .= "Subject: Hello\r\n";  
    $mailheaders .= "MIME-Version: 1.0\r\n"; 
    $mailheaders .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n"; 

    $multipart  =  "--".$boundary."\r\n";
    $multipart .= "Content-Type: text/plain; \r\n";
    $multipart .= "Content-Transfer-Encoding: 7bit\r\n";    
    $multipart .= "\r\n";
    $multipart .= $message;
    $multipart .= "\r\n";
    
    $multipart .= "--".$boundary."\r\n";
    $fp = fopen($filepath,"r"); 
        if (!$fp) 
        { 
            exit("Can't open file $filepath"); 
        }  

     
    $message_part .= "Content-Type: application/csv; name=\"$filename\" \r\n";  
    $message_part .= "Content-Transfer-Encoding: base64\r\n"; 
    $message_part .= "Content-Disposition: attachment; \r\n"; 

    $message_part .= chunk_split(base64_encode(fread($fp, filesize($filepath))));
    fclose($fp); 

    $message_part .= $boundary."--\r\n";
    $multipart .= $message_part;
     
    mail($to, $subject, $multipart, $mailheaders);

Допомогло уважне читання статті http://www.spravkaweb.ru/php/sovet/mail/file
Будьте уважними з boundary, читанням файлу та кодуваннями/Content-Type.

23

Re: [Вирішено]csv+mail()

От мені цікаво чисто з технічної точки зору, чому ви все таки вирішили не використовувати функцію file_get_contents(), можливо я чогось не знаю і краще, дійсно, використовувати цілий набір функцій замість одної?

24

Re: [Вирішено]csv+mail()

В чому проблема використання fopen/fread/fclose?
Крім кількості використаних функцій? Я відкритий до пропозицій і порад.

25

Re: [Вирішено]csv+mail()

http://php.net/manual/en/function.fread.php

If you just want to get the contents of a file into a string, use file_get_contents() as it has much better performance than the code above.

З офіційної документації

+file_get_contents  Note: This function is binary-safe. у будь якому випадку fread на вінді не binary safe

ну і остання. Для чого 3 конструкції якщо можна заюзати 1ну враховуючи що код буде простіший ;) Чистий код - хороший тон :)

26 Востаннє редагувалося ktretyak (28.07.2015 21:59:47)

Re: [Вирішено]csv+mail()

=) цікаво чому "окрім кількості"? Функції fopen/fread/fclose створювались раніше і вони мабуть гнучкіші у використанні під якісь маніпуляції з рядками файла. Функція file_get_contents() з'явилась пізніше і вона спрощує ті процедури з декількома функціями та в ній непотрібно використовувати цикл.

У вашому варіанті просто читається весь файл і передається. Не бачу причини чому б не зробити простіше...

27

Re: [Вирішено]csv+mail()

Я в цьому випадку помилявся, код дійсно слід переписати з file_get_contents.

Подякували: funivan1