Обработка исключений почты в 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