CakePHP电子邮件未发送但在调试模式下显示

时间:2011-09-07 09:15:38

标签: debugging email cakephp cakephp-1.3

我的CakePHP应该在点击按钮时发送电子邮件,但事实并非如此。此外,如果我在调试模式下运行它,电子邮件将显示为flash消息:($this->Email->delivery = 'debug';)。

注意:电子邮件设置为设置为使用PHP mail()函数。

调用电子邮件功能的代码:

$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 :(得分:0)

我认为我的电子邮件未发送的原因是因为我的CakePHP运行的Web服务器上没有配置邮件服务器,因此无法路由电子邮件。但是,这意味着它们会出现在调试中,因为它们是成功生成的,只是没有发送。

最后,我最终使用我的公司的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';

答案 1 :(得分:0)

我认为这里的问题是邮件服务器设置不正确Linux内置了邮件发送功能,但没有Windows(不知道在mac上)。查看smtp选项,因为您可以在Windows上轻松设置smtp电子邮件发件人

Setting up smtp windows - 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