CakePHP Catch Invalid Email(CakePHP捕获无效电子邮件)
本文介绍了CakePHP捕获无效电子邮件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用CakePHP(2.3.6)发送电子邮件邀请,用户在输入字段中输入逗号分隔的电子邮件地址列表。
目前,只要没有无效的电子邮件地址,我就可以毫无问题地发送电子邮件。但是,如果有一封坏的电子邮件,我尝试添加一个try/Catch来捕获错误,但我的代码从未成功捕获。
这是我的资料
try {
if($Email->send()) {
$this->Session->setFlash(__('Email successfully sent'), 'flash/success');
} else {
$this->Session->setFlash(__('Could not invite guests. Please, try again.'), 'flash/error');
$this->redirect($this->referer());
}
} catch(Exception $e) {
$this->Session->setFlash(__('Could not invite guests. Probably a bad email. Please, try again.'), 'flash/error');
$this->redirect($this->referer());
}
$this->redirect($this->referer());
当我在启用调试的情况下输入无效电子邮件时,我收到以下错误:
无效电子邮件:"foo" 错误:发生内部错误。
当调试关闭时:
发生内部错误。
我以为我的尝试/捕捉有问题,但在我看来它是正确的。是否有其他我应该使用的方法来捕获CakePHP错误?
提前谢谢!!
推荐答案
无效的电子邮件地址会导致在设置它们时立即引发异常。这发生在调用Send方法之前,因此它不会到达您发布的try块。
这来自我编写的一个组件,该组件处理为我们的系统发送几个不同的电子邮件。我已经将每个地址设置包装在一个try块中,这样就可以更容易地追踪到有问题的地址,但如果您不想要那么多细节,可以将所有这些都包装在一个块中。您可以使用getMessage方法检查来自异常的消息以查看有问题的地址字符串。这适用于我的Cake 2.3:
$email = new CakeEmail();
//...
// set to for email
try
{
$email->to($recipient);
}
catch(SocketException $e)
{
$result['problem'] = 'Recipient Address';
$result['message'] = $e->getMessage();
return $result;
}
// set cc for email - not required
try
{
if($cclist != '') $email->cc(preg_split('/, */', $cclist));
}
catch(SocketException $e)
{
$result['problem'] = 'CC List';
$result['message'] = $e->getMessage();
return $result;
}
这篇关于CakePHP捕获无效电子邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:CakePHP捕获无效电子邮件


猜你喜欢
- Laravel 5:Model.php 中的 MassAssignmentException 2021-01-01
- PHP - if 语句中的倒序 2021-01-01
- PHP foreach() 与数组中的数组? 2022-01-01
- 覆盖 Magento 社区模块控制器的问题 2022-01-01
- Oracle 即时客户端 DYLD_LIBRARY_PATH 错误 2022-01-01
- 如何在 Symfony2 中正确使用 webSockets 2021-01-01
- 如何从数据库中获取数据以在 laravel 中查看页面? 2022-01-01
- 如何使用 Google API 在团队云端硬盘中创建文件夹? 2022-01-01
- 使用 GD 和 libjpeg 支持编译 PHP 2022-01-01
- openssl_digest vs hash vs hash_hmac?盐与盐的区别HMAC? 2022-01-01