我正在运行Cakephp 2.4.3,我正在尝试使用CakeEmail发送电子邮件。
我在UsersController的顶部有这个代码:
App::uses('AppController','Controller','CakeEmail','Network/Email');
Controller中的这个功能:
function send_email(){
try{
$email = new CakeEmail('test');
$email->from('sender@example.com');
$email->to('me@gmail.com');
$email->subject('Test');
if($email->send('Test Message'))
echo 'Success';
else echo 'Failure without Exception';
} catch (Exception $e){
echo 'Failure with Exception';
}
}
,这在Config / email.php
中public $test = array(
'log' => true
);
当我转到网址:mysite.com/users/send_email
它说“成功”,调试日志说:
2014-05-30 22:49:43 Debug:
From: sender@example.com
X-Mailer: CakePHP Email
Date: Fri, 30 May 2014 22:49:43 +0000
Message-ID: <53890b07e3b44b2b88132a62ad2deb05@mysite.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Test Message
但我从未收到进入我的Gmail帐户的电子邮件。我也检查了我的垃圾邮件文件夹。可能是什么问题以及我可以如何调试它?
更新:
我的蛋糕应用程序正在网络上托管。我尝试在其他域使用不同的电子邮件地址,并将电子邮件代码更改为:
try{
if(mail('xxx@iioengine.com','Test Subject','Test Message'))
echo 'Success';
else echo 'Failure without Exception';
} catch (Exception $e){
echo 'Failure with Exception';
}
但结果没有改变。
答案 0 :(得分:3)
发送邮件通常不会从localhost发挥作用。您可以尝试在设置中设置端口,但您的isp可能会阻止端口。
只需查看规格:http://book.cakephp.org/2.0/en/core-utility-libraries/email.html
看起来你的new
声明似乎不应该在里面进行测试:
$Email = new CakeEmail();
要进行调试,您可以尝试向其他主机(不是gmail)发送电子邮件。您也可以尝试使用默认的php mail()
功能,这实际上非常简单易用,与蛋糕的布局非常相似,这并不奇怪。