我的问题是:
我在控制器中的:
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';
在代码中,它会显示电子邮件信息,似乎一切正常。
您有什么想法可以解释为什么它不发送电子邮件?
答案 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服务器才能发送电子邮件。如果您尝试从本地主机发送它,则有两个不错的选择:
您需要按照send email using CakePHP through SMTP的说明操作。您还可以修改php.ini设置以反映新设置。
答案 3 :(得分:0)
我遇到了同样的问题,我忘记在我的xampp服务器上启用ssl,因为只需要在php.ini文件中添加(或取消注释)extension=php_openssl.dll
行。希望它有所帮助。