Я создаю CSV «на лету» с PHP, поэтому мне нужно прикрепить этот CSV-файл к сообщению Swift Mailer. Я попытался использовать file_get_content в созданном файле, а также использовать chunk_split (base64_encode (file_get_contents ()) в созданном файле, а также прикреплять файл до его записи на диск. Без записи на диск я получаю Rescource # 183 в CSV с прикреплением это с file_get_content. Я получаю только строку в каждой строке CSV-файла, кто-нибудь знает, что я делаю неправильно?
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 } }
Присоединение файла к быстрой почтовой программе:
$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);
в вашем случае прикрепление будет:
$message->attach(new Swift_Message_Attachment(file_get_contents($file), $order.'order.csv', 'application/vnd.ms-excel'));
просто, например, конечно 🙂
//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();