Search code examples
phpexcelzend-mail

Zend_mail send duplicate attachment


I am using phpexcel library with zend framwork. I want to send mail to user with excel file attachment, all are working good but mail send with two attachment one is duplicate, i dont know why.

here is my function which is used to export excel and send it to user

public function exportandmail($name = NULL) {
        if ($name === NULL) {
            $name = 'excel_' . date('Y_m_d');
        }
        $name = $name.'.xlsx';

        $objWriter = PHPExcel_IOFactory::createWriter($this->_excel, 'Excel2007');
        $objWriter->save("public/uploads/Mailexcel/".$name);

          $message="<table width='90%' align='center' >
                 <tr>
                 <th height='15' style='background-color:#037296;padding:10px;color:#FFFFFF' align='left'>excel</th>
                 </tr>
                     <tr>
                     <td style='padding:10px'><strong>Please find the attachment. </strong> 

                    </td>
                    <tr>
                    <td style='padding:10px'>
                        Thanks,
                    </td>
                    </tr>
                    </table>";

                $mail = new Zend_Mail();
                $mail->setBodyHtml($message);
                $mail->setFrom('[email protected]', 'sender');
                $mail->addTo('[email protected]');
                $mail->setSubject('find attachment');

                $fileContents = file_get_contents("public/uploads/Mailexcel/".$name);
                $file = $mail->createAttachment($fileContents);
                $file->filename = "excel.xlsx";
                $mail->addAttachment($file);   
                $mail->send();
        exit;
    }

Thanks in advance.


Solution

  • I got the solution, In my code, i use both createAttachment and addAttachment, thats why my mail send with duplicate attachment. Remove addAttachment and its working fine.

    $fileContents = file_get_contents("public/uploads/Mailexcel/".$name);
                    $file = $mail->createAttachment($fileContents);
                    $file->filename = "excel.xlsx";
                    $mail->addAttachment($file);   // Remove this 
                    $mail->send();