Проблема при отправке почты с Zend Mail?

Я пытаюсь отправить электронное письмо с ZendMail (этот простой скрипт подводит итог)

<?php require_once 'Zend/Mail.php'; $mail = new Zend_Mail(); $mail->setBodyText('My Nice Test Text'); $mail->setBodyHtml('My Nice Test Text'); $mail->setFrom('test@example.com', 'Mr Example'); $mail->addTo('contact@mypage.com', 'Mr Test'); $mail->setSubject('TestSubject'); $mail->send(); ?> 

Однако я получаю эту трассировку стека:

 Fatal error: Uncaught exception 'Zend_Mail_Transport_Exception' with message 'Unable to send mail. ' in /usr/share/php/libzend-framework-php/Zend/Mail/Transport/Sendmail.php:137 Stack trace: #0 /usr/share/php/libzend-framework-php/Zend/Mail/Transport/Abstract.php(348): Zend_Mail_Transport_Sendmail->_sendMail() #1 /usr/share/php/libzend-framework-php/Zend/Mail.php(1178): Zend_Mail_Transport_Abstract->send(Object(Zend_Mail)) #2 /var/www/hexreaction/mail/index2.php(11): Zend_Mail->send() #3 {main} thrown in /usr/share/php/libzend-framework-php/Zend/Mail/Transport/Sendmail.php on line 137 

РЕДАКТИРОВАТЬ:

Я не пытаюсь использовать SMTP для отправки своего сообщения электронной почты, и у меня есть менее ужасная проблема, но все еще проблема.

 <?php require_once 'Zend/Mail.php'; $config = array('auth' => 'login', 'username' => 'contact@mypage.com', 'password' => 'secretpass'); $transport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config); $mail = new Zend_Mail(); $mail->setBodyText('This is the text of the mail.'); $mail->setFrom('contact@mypage.com', 'Some Sender'); $mail->addTo('contact@mypage.com', 'Some Recipient'); $mail->setSubject('TestSubject'); $mail->send($transport); ?> 

Эта ошибка этого броска, я действительно не понимаю почему:

 Fatal error: Class 'Zend_Mail_Transport_Smtp' not found in /var/www/hexreaction/mail/index3.php on line 7 

EDIT 2:

Это мой последний рабочий код

 require_once('Zend/Mail/Transport/Smtp.php'); require_once 'Zend/Mail.php'; $config = array('auth' => 'login', 'username' => 'somemail@mysite.com', 'password' => 'somepass', 'ssl' => 'tls'); $transport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config); $mail = new Zend_Mail(); $mail->setBodyText('This is the text of the mail.'); $mail->setFrom('somemail@mysite.com', 'Some Sender'); $mail->addTo('somemail@mysite.com', 'Some Recipient'); $mail->setSubject('TestSubject'); $mail->send($transport); 

Как вы можете видеть на трассе Stack Zend_Mail использует Zend_Mail_Transport_Sendmail качестве транспортного адаптера.
Поэтому убедитесь, что в вашей системе работает MTA (например, Postfix), совместимый с sendmail.

В качестве альтернативы вы можете использовать транспортный адаптер Zend_Mail_Transport_Smtp и использовать внешний SMTP-сервер, например

 $tr = new Zend_Mail_Transport_Smtp('mail.example.com', array( 'auth' => 'login', 'username' => $username, 'password' => $password, 'port' => $port, )); Zend_Mail::setDefaultTransport($tr); 

Изменить: для вашей второй проблемы: a

require_once('Zend/Mail/Transport/Smtp.php');

должен помочь.

Еще одна замечательная вещь в Zend_Mail – это цепочка, поэтому вы можете сделать это:

 $mail = new Zend_Mail(); $mail->setBodyText('My Nice Test Text') ->setBodyHtml('My Nice Test Text') ->setFrom('test@example.com', 'Mr Example') ->addTo('contact@mypage.com', 'Mr Test') ->setSubject('TestSubject') ->send(); 

Не знаю точно, правильно ли слово «цепочка», но я надеюсь, что вы поняли суть. Это просто бесплатный совет. Ответ дается (справа) Бенджамином

Обновленный ответ Goles нужно добавить 'ssl' => 'tls', сверху, чтобы избежать ошибок

 require_once('Zend/Mail/Transport/Smtp.php'); require_once 'Zend/Mail.php'; $config = array( 'ssl' => 'tls', 'auth' => 'login', 'username' => 'somemail@mysite.com', 'password' => 'somepass' ); $transport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config); $mail = new Zend_Mail(); $mail->setBodyText('This is the text of the mail.'); $mail->setFrom('somemail@mysite.com', 'Some Sender'); $mail->addTo('somemail@mysite.com', 'Some Recipient'); $mail->setSubject('TestSubject'); $mail->send($transport); 

Кроме того, если вы хотите отправить почту в magento с приложением, посмотрите следующий фрагмент

 $config = array( 'ssl' => 'tls', 'auth' => 'login', 'username' => 'hassanalishahzad@gmail.com', 'password' => 'yourPassword' ); $transport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config); $bodytext = "Please see attachment for customers detail."; $mail = new Zend_Mail(); $mail->setFrom('noreply@yourdomain.com','Hassan'); $mail->addTo('xyz@yourdomain.com' ); $mail->setSubject('Customers info'); $mail->setBodyText($bodytext); $file = $mail->createAttachment(file_get_contents($path.$fileName)); $file ->type = 'text/csv'; $file ->disposition = Zend_Mime::DISPOSITION_INLINE; $file ->encoding = Zend_Mime::ENCODING_BASE64; $file ->filename = $fileName; if(!$mail->send($transport)) { echo 'Message could not be sent.'; echo 'Mailer Error: ' . $mail->ErrorInfo; } else { echo 'Message has been sent'; } echo "File Completed";exit; }