Обработка на изключения за поща в zend framework 2

Опитвам се да изпратя имейл в zend framework 2, използвайки Mail\Transport\Sendmail(). Показва изключение по време на изпълнение на невалиден имейл адрес.

съобщението за грешка е „Не може да се изпрати имейл: mail(): отговор на SMTP сървъра: 550 5.1.1 ... неизвестен потребител“

Zend\Mail\Exception\RuntimeException

$options = нов Mail\Transport\SmtpOptions($config_setting);

    // render Email Content
    $this->renderer = $this->getServiceLocator()->get('ViewRenderer');
    $content = $this->renderer->render($config['mail']['templates']. $messageTemplate, $messageParam);

    // make a header as html
    $html = new MimePart($content);
    $html->type = $config['mail']['content_type'];
    $body = new MimeMessage();
    $body->setParts(array($html,));

    // instance mail
    $mail = new Mail\Message();
    $mail->setBody($body); // will generate our code html from template.phtml
    $mail->setFrom($config['mail']['from_email'],$config['mail']['from_name']);
    $mail->setTo($mailTo);
    $mail->setSubject($subject);
    //$transport = new Mail\Transport\Smtp($options);
    $transport = new Mail\Transport\Sendmail();

    try{
        $response = @$transport->send($mail);
        return $response;
    }
    catch(Zend\Mail\Exception\RuntimeException $ex)
    {
        $ex->getMessage();
        $response = array('error' => 1, 'msg' => $ex->getMessage());
        //return $response;
    }

искам да игнорирам това съобщение за изключение.


person Shiv Kumar Sah    schedule 18.09.2013    source източник
comment
Бихте ли публикували съответните записи в регистрационния файл на sendmail?   -  person AnFi    schedule 18.09.2013
comment
@AndrzejA.Filip :- Не може да се изпрати имейл: mail(): Отговор на SMTP сървъра: 550 5.1.1 ... Неизвестен потребител   -  person Shiv Kumar Sah    schedule 18.09.2013


Отговори (1)


Имате два транспорта, един Sendmail и един SMTP. Sendmail е вътрешен пощенски сървър на вашия компютър, който трябва да работи добре. SMTP е протокол, който позволява на (възможно външен) сървър за електронна поща да изпраща имейли. Можете да използвате свой собствен SMPT сървър или да се свържете с напр. Google или Hotmail за изпращане на имейли през SMTP.

Имате това в кода си:

//$transport = new Mail\Transport\Smtp($options);
$transport = new Mail\Transport\Sendmail();

Така че вие ​​използвате във вашия код транспорта на Sendmail, но изключението е от SMTP:

Не може да се изпрати имейл: mail(): Отговор на SMTP сървъра: 550 5.1.1 ... Неизвестен потребител

Така че ми се струва, че използвате SMTP във вашия код някъде случайно. Преминете към Sendmail и той трябва да работи добре или проверете въпроса си отново с кода, който сте публикували.

person Jurian Sluiman    schedule 18.09.2013
comment
Благодаря Юриан за бързия отговор. Опитах и ​​двете, но показва същото изключение след използване на Smtp($options), когато имейл идентификаторът е невалиден. - person Shiv Kumar Sah; 18.09.2013
comment
Дори аз опитах същото, но все още получавам грешката и дори пощата не се изпраща. - person Sarang; 12.02.2016