Как отправить электронное письмо с использованием Zend_Mail, sendmail и localhost? - PullRequest
8 голосов
/ 28 октября 2009

Я разрабатываю приложение Zend Framework, которое включает в себя простую функцию электронной почты. На моем компьютере работает версия для разработчиков, на которой установлена ​​Ubuntu. Рабочая версия будет работать на рабочем сервере.

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

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

Обновление: Я попробовал другой подход, настроив транспорт SMTP для использования localhost:

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

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

Обновление: Полагаю, у меня не был установлен / настроен SMTP-сервер. Этот учебник позволил мне легко запустить SMTP-сервер . Теперь оба приведенных выше примера кода работают.

Ответы [ 2 ]

2 голосов
/ 28 октября 2009

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

2 голосов
/ 28 октября 2009

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

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

...