Search code examples
phpemailzend-frameworkzend-framework2send

PHP zf2 mail return null


I try to send an email with ZF2.

I use:

    $mail = new Mail\Message();
    $mail->addFrom('email@mail.com', 'name')
    ->addTo('email@mail.com')
    ->setSubject('Cotización')->setBody('This is the text of the mail.');


    try{
    $transport = new Mail\Transport\Sendmail();
    $transport->send($mail);
    }catch (\Exception $e)
    {
        //var_dump($e);
    }
    die();

And i get allways "null". In the HTML I get:

<pre class="xdebug-var-dump" dir="ltr"><font color="#3465a4">null</font>

But I get comment the var_dump and I set die(); but prints me text. I really don't know how I can solve it. PD: No enter in the exception. I try print text.


Solution

  • Try this:

    //mail
    use Zend\Mail\Message;
    use Zend\Mail\Transport\Sendmail as SendmailTransport;
    use Zend\Mime\Part as MimePart;
    use Zend\Mime\Message as MimeMessage;
    

    .....

    function sendEmail($mail){
    
    /*
    *Optional; email with style
    *
    */
            $this->renderer = $this->getServiceLocator()->get('ViewRenderer');
            $content = $this->renderer->render('application/index/mail',array());
    
    
            $html = new MimePart($content);
            $html->type = "text/html";
    
            $body = new MimeMessage();
    
            $body->setParts(array($html));
    
    
            $cabeceras  = 'MIME-Version: 1.0' . "\r\n";
            $cabeceras .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
     /*
        *Optional; email with style
        *
        */
    
            $transport = $this->getServiceLocator()->get('mail.transport');
            $message = new Message();
            $message->getHeaders()->addHeaderLine($cabeceras);
            $this->getRequest()->getServer();  //Server vars
            $message->addTo($mail)
    
                ->addFrom('test@gmail.com')
                ->setSubject('TestSubject')
                ->setEncoding("UTF-8")
                ->setBody($body);
    
            $transport = new SendmailTransport();
            $transport->send($message);
        }