Attachments Swift Mailer

I am creating a CSV on the fly with PHP, so I need to attach this CSV file to the Swift Mailer post. I tried to use file_get_content in the created file, and also use chunk_split (base64_encode (file_get_contents ()) in the created file, and also attach the file before writing it to the disk. Without writing to the disk, I get Rescource # 183 in CSV with attaching it with file_get_content I I get only a line in each line of the CSV file, does anyone know what I'm doing wrong?

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, ' test@email.com ', Address, NULL, NULL, $attachment); // attach and send } } 
+4
source share
2 answers

Attach a file to a quick mailer:

 $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(' info@example.com ', 'example.com'); $recpients->addTo(' info@example.com ', '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); 

in your case the attachment will be:

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

for example, for example :)

+6
source
 //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(' test@test.com '=>'test')) ->setTo(' testto@testto.com ') ->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(); 
0
source

Source: https://habr.com/ru/post/1335227/


All Articles