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捕获无效电子邮件
基础教程推荐
猜你喜欢
- 在 Woocommerce 中根据运输方式和付款方式添加费用 2021-01-01
- 在多维数组中查找最大值 2021-01-01
- 在 PHP 中强制下载文件 - 在 Joomla 框架内 2022-01-01
- mysqli_insert_id 是否有可能在高流量应用程序中返回 2021-01-01
- Libpuzzle 索引数百万张图片? 2022-01-01
- 超薄框架REST服务两次获得输出 2022-01-01
- 如何在 PHP 中的请求之间持久化对象 2022-01-01
- WooCommerce 中选定产品类别的自定义产品价格后缀 2021-01-01
- XAMPP 服务器不加载 CSS 文件 2022-01-01
- 通过 PHP SoapClient 请求发送原始 XML 2021-01-01