Я получаю следующую ошибку при отправке почты с использованием Zend Frame Work.Я также включил мой код - PullRequest
2 голосов
/ 14 декабря 2011
Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception'
with message 'Invalid controller specified (error)'  
in C:\xampp\htdocs\zend\library\Zend\Controller\Dispatcher\Standard.php:248 Stack trace:  
 #0 C:\xampp\htdocs\zend\library\Zend\Controller\Front.php(954):
    Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
 #1 C:\xampp\htdocs\zend\library\Zend\Application\Bootstrap\Bootstrap.php(97):
    Zend_Controller_Front->dispatch()
 #2 C:\xampp\htdocs\zend\library\Zend\Application.php(366): 
    Zend_Application_Bootstrap_Bootstrap->run()
 #3 C:\xampp\htdocs\intern\lc.intern\public\index.php(26):
    Zend_Application->run()
 #4 {main} Next exception 'Zend_Controller_Exception'
 with message 'Invalid controller specified (error)'
   #0 C:\xampp\htdocs\zend\library\Zend\Controller\Front.php(954):
    Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
   #1 C:\xampp\htdocs\zend\library\Zend\Application\B
     in C:\xampp\htdocs\zend\library\Zend\Controller\Plugin\Broker.php on line 336

мой код для отправки почты выглядит следующим образом:

$mail = new Zend_Mail();
$mail->addTo('myemail@gmail.com', 'my name')
         ->setFrom('myemanil@gmail.com', 'my name')
         ->setSubject('My Subject')
         ->setBodyText('Email Body')
         ->send();

когда я удаляю последнюю строку, т. Е. Send (), тогда она работает нормально, но для отправки почты нам требуется send (): -P

Я застрял здесь ...

, пожалуйста, помогите мне ...

заранее спасибо

Ответы [ 4 ]

1 голос
/ 14 декабря 2011

Мне кажется, что здесь происходят две вещи:

  1. Метод send() вызывает исключение.Поскольку вы не указываете объект $transport, он пытается использовать стандартный sendmail по умолчанию.Похоже, вы используете Windows.У вас установлен sendmail?Я также получаю исключения при отправке в моей локальной среде разработки Windows.Может быть, тестирование с транспортом на основе smtp?

  2. Сгенерированное исключение вызывает обработчик ошибок, поэтому он ищет ErrorController::errorAction().Сообщение, которое вы видите, является результатом пропущенного или неправильно помещенного ErrorController.

Просто мысли вслух.

0 голосов
/ 10 августа 2013

Вы должны установить транспорт по умолчанию для вашего приложения. Там, где вы пишете код, в конструкторе класса вы должны использовать это.

function __construct() {
    $tr = new Zend_Mail_Transport_Smtp(<your smtp IP address>);
    Zend_Mail::setDefaultTransport($tr);
}

Примечание. Наряду с приведенным выше кодом, пожалуйста, проверьте в своем файле php.ini вашего сервера Apache следующие настройки. Опция ниже должна быть без комментариев.

extension=php_openssl.dll
0 голосов
/ 15 декабря 2011

попробуй вот так пример из моего проекта

  $options = array(
        'auth'     => 'login',
        'username' => 'username@gmail.com',
        'password' => 'password',
        'ssl'      => 'tls',
        'port' => 587
    );
    $mailTransport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $options);
    Zend_Mail::setDefaultTransport($mailTransport);

$m = new Zend_Mail('UTF-8');
$m->setHeaderEncoding(Zend_Mime::ENCODING_BASE64);

    $m->addTo("username@gmail.com");
    $m->setFrom('username2b@gmail.com', 'username');
    $m->setSubject('usertext');
    $errortext = "report";
    $m->setBodyHtml($errortext, 'UTF-8', Zend_Mime::ENCODING_BASE64);
    $m->send();
0 голосов
/ 14 декабря 2011

Прежде всего, пожалуйста, обновитесь до последней стабильной ветки ZF.

В качестве быстрого исправления вы должны попытаться заменить свой код следующим:

$mail = new Zend_Mail();
$mail->addTo('myemail@gmail.com', 'my name')
         ->setFrom('myemanil@gmail.com', 'my name')
         ->setSubject('My Subject')
         ->setBodyText('Email Body');
$mail->send(); 

В зависимости от используемой вами версии ZF, здесь может быть проблема цепочки методов.

...