Письмо CakePHP не отправляется, но отображается в режиме отладки - PullRequest
0 голосов
/ 07 сентября 2011

Мой CakePHP должен отправлять электронное письмо при нажатии кнопки, но это не так.Кроме того, сообщение электронной почты будет отображаться в виде флеш-сообщения, если я запускаю его в режиме отладки: ($this->Email->delivery = 'debug';).

Примечание. Адрес электронной почты настроен на использование функции mail mail () PHP.

Код для вызова функции электронной почты:

$this->_sendUpdateEmail( $this->Auth->user('id'), $about_id );

Функция электронной почты

function _sendUpdateEmail($from_user_id, $about_id) {
    $fromUser = $this->User->read(null, $from_user_id);

    $users = $this->User->find('all', array(
        'conditions' => array('User.distribution =' => 1)
    ));

    # loop to send email to all users who are marked as on the distribution list
    for($i = 0, $size = sizeof($users); $i < $size; ++$i) { 
        $user = $users[$i]['User'];

        $this->Email->from = $fromUser['User']['email'];
        $this->Email->replyTo = $fromUser['User']['email'];
        $this->Email->to = $user['email'];
        $this->Email->subject = 'Test email';
        $this->Email->template = 'update';
        $this->Email->sendAs = 'both'; // both = html and text

        $this->set('user', $user);
        $this->set('about', $about_id);

        $this->Email->send();
        $this->Email->reset();
    }
}

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

Ответы [ 2 ]

0 голосов
/ 08 сентября 2011

Я думаю, что проблема в том, что почтовый сервер не настроен правильно. Linux поставляется со встроенной функцией отправки почты, но не с окнами (без понятия на Mac).Изучите параметры SMTP, так как вы можете легко настроить SMTP-отправитель электронной почты в Windows

Настройка SMTP-окон - http://publib.boulder.ibm.com/infocenter/cqhelp/v7r1m2/index.jsp?topic=/com.ibm.rational.clearquest.webadmin.doc/topics/c_config_email_smtp_win.htm

и

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

0 голосов
/ 08 сентября 2011

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

В итоге я в конечном итоге использовал почтовый сервер Exchange моей компании с настройками SMTP.

Код для использования SMTP для отправки электронных писем CakePHP

$this->Email->smtpOptions = array(        
    'port'=>'25',         
    'timeout'=>'30',        
    'host' => '192.168.0.244',       
);

// Other email code here, e.g. from and to etc...

$this->Email->delivery = 'smtp';
...