2010-12-01 2 views
2

моя проблема является:CakePHP письма не работает

в контроллере у меня есть:

вар $ компоненты = Array ('Email');

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

function send_emails() { 
    $this->Email->from = 'Somebody <[email protected]>'; 
    $this->Email->to  = 'Somebody Else <[email protected]>'; 
    $this->Email->subject = 'Test'; 
    $this->Email->send('Hello message body!'); 
} 

Я использую торт 1.3 и запустить его на локальном хосте с Apache 2.2.11 и PHP5. Вы, ребята, не знаете, почему это не работает?

Когда я поставил

$this->Email->delivery = 'debug'; 

в коде, он отображает информацию по электронной почте, и кажется, что все в порядке.

Есть ли у вас какие-либо идеи, по какой причине он не может отправлять электронную почту?

ответ

0

Вы отправляете с сервера Windows? Если да, правильно настроили ли вы MTA в php ini? Можете ли вы отправить почту с помощью функции mail()?

Если вы на окнах и нужен MTA, hMail отлично подходит для развития, отметим, что многие хосты будут отвергать почту с локального компьютера спам, так что не использовать на производстве без записи MX, ключи домена и т.д.

0

Для отправки электронной почты вам необходим SMTP-сервер. Если вы пытаетесь отправить его из локального хоста, два хороших альтернатив:

  • FreeSMTP: под управлением Windows-инструмент, который позволяет вашему компьютеру действовать как сервер SMTP
  • Gmail: Вы можете использовать свой адрес Gmail для в целях тестирования.

Для этого необходимо выполнить send email using CakePHP through SMTP. Вы также можете изменить свои настройки php.ini, чтобы отобразить новые настройки.

2

Если вы работаете на удаленном сервере, то есть на сервере хостинга, он должен работать, поскольку он будет получать электронную почту по умолчанию.

Как и вы, вы должны предоставить почтовому компоненту некоторые возможности электронной почты. Вы можете сделать это, например, загружая свои данные gmail (или что-то еще) smtp, то есть сервер, логин, пароль.

/* SMTP Options for GMAIL */ 
    $this->Email->smtpOptions = array(
     'port'=>'465', 
     'timeout'=>'30', 
     'auth' => true, 
     'host' => 'ssl://smtp.gmail.com', 
     'username'=>'[email protected]', 
     'password'=>'your_gmail_password', 
    ); 

    /* Set delivery method */ 
    $this->Email->delivery = 'smtp'; 

http://book.cakephp.org/view/1290/Sending-A-Message-Using-SMTP См

Если вы не знаете, какие полномочия использовать, найдите его в помощи или FAQ вашего почтового провайдера. Как правило, его можно найти, выполнив поиск настроек Outlook или Thunderbird.

0

У меня была такая же проблема, я забыл включить ssl на моем сервере xampp, для этого нужно просто добавить (или раскомментировать) строку extension=php_openssl.dll в файл php.ini. Надеюсь, поможет.