2011-01-12 2 views
4

Я создаю CSV на лету с PHP, тогда мне нужно прикрепить этот CSV-файл к сообщению Swift Mailer. Я попытался использовать file_get_content в созданном файле, а также использовать chunk_split (base64_encode (file_get_contents()) в созданном файле, а также прикреплять файл до его записи на диск. Без записи на диск я получаю Rescource # 183 в CSV с прикреплением он с file_get_content я получаю только строки в каждой строке файла CSV, кто знает, что я делаю неправильноВложения Swift Mailer

if(!file_exists(_PS_ORDERS_DIR_.$orderDate.'/'.$file_name.'.csv')) 
{ 
    if($file = fopen (_PS_ORDERS_DIR_.$orderDate.'/'.$file_name.'.csv', 'x+')) 
    { 
    foreach ($list as $fields) 
    { 
    fputcsv($file, $fields); 
    } 



    $attachment['mime'] = 'application/vnd.ms-excel'; 
    $attachment['content'] = file_get_contents($file); 
    $attachment['name'] = $order.'order'; 
    EDIT    
Mail::Send(1, 'order_conf', 'Order CSV Attachment', $success, '[email protected]', Address, NULL, NULL, $attachment); // attach and send 
     } 
     } 
+0

Можете ли вы показать код, который вы используете, чтобы прикрепить вложение? –

+0

Что вы подразумеваете под «строкой в ​​каждой строке файла CSV»? –

+0

Я могу создать файл в порядке, но просто у него проблемы с отправкой. Я имею в виду, что вместо того, чтобы каждый элемент в массиве был назначен отдельной ячейке в строке, первая строка, например A1, будет иметь все значения из массива, разделенные запятыми – Dan

ответ

6

Прикрепление файла в быструю почтовую программу:

$swift =& new Swift(new Swift_Connection_SMTP(MAIL_SMTP_URL, MAIL_SMTP_PORT)); 
$message =& new Swift_Message($subject); 
$recpients =& new Swift_RecipientList(); 
$sender =& new Swift_Address('[email protected]', 'example.com'); 
$recpients->addTo('[email protected]', 'www.example.com'); 

$message->attach(new Swift_Message_Part('this is my body')); 
$message->attach(new Swift_Message_Attachment($binarycontents, $fileTitle, $mimeType)); 
$swift->send($message, $recpients, $sender); 

в вашем случае прикрепление будет:

$message->attach(new Swift_Message_Attachment(file_get_contents($file), $order.'order.csv', 'application/vnd.ms-excel')); 

только для примера Ofcourse :)

0
//to set headers of csv file(first row) 
$content = "user_id,first_name,last_name,phone,gender,pan_number\r\n"; 

//this can be dynamic data from database or from anywhere can loop this for multiple rows 
$content .= "1,test_fn,test_ln,8888999900,M,ASDD3333\r\n"; 

//include swiftmailer library in order to run the below code 
Yii::$app->mailer->compose() 
->setFrom(array('[email protected]'=>'test')) 
->setTo('[email protected]') 
->setSubject('your subject') 
->setHtmlBody('<table><tr><td>your email body message here</td></tr>  </table>') 
->attachContent($content, ['fileName' => 'user.csv', 'contentType' => 'application/vnd.ms-excel'])->send(); 
Смежные вопросы