2009-10-27 3 views
8

Я разрабатываю приложение zend framework, которое включает в себя простую функцию электронной почты. Версия разработки работает на моем компьютере, на котором запущен Ubuntu. Производственная версия будет запущена на производственном сервере.Как отправить электронное письмо с помощью Zend_Mail, sendmail и localhost?

При попытке отправить тестовое письмо мне, я получаю исключение из сообщения: «Невозможно отправить почту». Я не знаю, является ли это проблемой среды или проблемой с кодом. Я не пользуюсь транспортом, поэтому считаю, что он не работает Zend_Mail_Transport_Sendmail. Вот мой код:

public function sendtestAction() 
{ 
    $mail = new Zend_Mail(); 
    $mail->setFrom('[email protected]', 'Test Email'); 
    $mail->addTo('[email protected]', 'My Name'); 
    $mail->setSubject('This is just a test.'); 
    $mail->setBodyText('This is only a test.'); 
    $mail->send(); 
} 

Update: Я попробовал другой подход, установив SMTP транспорт использовать Localhost:

transport = new Zend_Mail_Transport_Smtp('localhost'); 
Zend_Mail::setDefaultTransport($transport); 

Я получил различные ошибки на этот раз: «Соединение отклонено» Не уверен, что это значит. Может, я еще ничего не поставил?

Обновление: Возможно, у меня не было установленного/настроенного SMTP-сервера. This tutorial made it really easy for me to get an SMTP server up an running. Теперь оба примера кода выше работают.

+0

Сделайте что-нибудь в вашем журнале smtp? –

+0

Где их найти? – Andrew

+0

На Ubuntu, check/var/logs/ –

ответ

2

Похоже, вам нужно настроить MTA или найти тот, на который вы можете отправить сообщение. Рабочий стол Ubuntu должен установить один по умолчанию, возможно, exim или postfix, но если вы его не настроили, он вряд ли будет запущен.

2

Вы не хотите устанавливать транспорт по умолчанию, если вы хотите использовать sendmail (это значение по умолчанию), а SMTP отличается.

Что не отправляет письма, предполагает, что sendmail или MTA на вашем сервере не установлены/не установлены правильно.