cakephp电子邮件无法正常工作

时间:2010-12-01 20:14:35

标签: email cakephp cakephp-1.3

我的问题是:

我在控制器中的

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在localhost上运行它。你们有没有想过为什么它不起作用?

当我把

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

在代码中,它会显示电子邮件信息,似乎一切正常。

您有什么想法可以解释为什么它不发送电子邮件?

4 个答案:

答案 0 :(得分:2)

如果您正在远程服务器(即托管服务器)上进行开发,那么它应该可以正常工作,因为它会选择默认电子邮件。

如果不是,您必须为邮件组件提供一些电子邮件功能。例如,您可以通过输入您的Gmail(或其他)smtp详细信息(即服务器,登录名,密码)来执行此操作。

   /* 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

如果您不确定要使用哪种凭据,请在电子邮件提供商的帮助或常见问题解答中查找。通常可以通过搜索如何设置Outlook或Thunderbird来找到它。

答案 1 :(得分:0)

您是从Windows服务器发送的吗?如果是这样,你有没有在PHP ini中正确设置你的MTA?你能用mail()函数发送邮件吗?

如果你在Windows上并且需要MTA,hMail非常适合开发,请注意许多主机会拒绝来自本地计算机的垃圾邮件,因此不要在没有MX记录的情况下使用生产,域密钥等

答案 2 :(得分:0)

您需要SMTP服务器才能发送电子邮件。如果您尝试从本地主机发送它,则有两个不错的选择:

  • FreeSMTP:一种基于Windows的工具,可让您的计算机像SMTP服务器一样工作
  • Gmail:您可以将Gmail地址用于测试目的。

您需要按照send email using CakePHP through SMTP的说明操作。您还可以修改php.ini设置以反映新设置。

答案 3 :(得分:0)

我遇到了同样的问题,我忘记在我的xampp服务器上启用ssl,因为只需要在php.ini文件中添加(或取消注释)extension=php_openssl.dll行。希望它有所帮助。