Электронная почта CakePHP не работает - PullRequest
2 голосов
/ 01 декабря 2010

Моя проблема:

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

var $ components = array ('Email');

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

function send_emails() {
  $this->Email->from    = 'Somebody <somebody@example.com>';
  $this->Email->to      = 'Somebody Else <myspamplace@centrum.cz>';
  $this->Email->subject = 'Test';
  $this->Email->send('Hello message body!');
 }

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

Когда я ставлю

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

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

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

Ответы [ 4 ]

2 голосов
/ 01 декабря 2010

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

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

   /* SMTP Options for GMAIL */
   $this->Email->smtpOptions = array(
        'port'=>'465', 
        'timeout'=>'30',
        'auth' => true,
        'host' => 'ssl://smtp.gmail.com',
        'username'=>'your_username@gmail.com',
        '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 голосов
/ 01 февраля 2013

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

0 голосов
/ 01 декабря 2010

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

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

Вам необходимо следовать инструкциям, чтобы отправлять электронную почту с помощью CakePHP через SMTP . Вы также можете изменить настройки php.ini, чтобы отразить новые настройки.

0 голосов
/ 01 декабря 2010

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

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

...