如何处理cakephp中的荣耀电子邮件异常?

时间:2015-12-24 09:23:51

标签: email cakephp

我有一个数组列表。数组中有一些无效的电子邮件。即:

$to = array('sattar.kuet@gmail.com','sas dsad .com');

此处sattar.kuet@gmail.com是有效邮件,但 sas dsad .com 不是有效的电子邮件。因此,如果我想与此收件人($ to)发送电子邮件,则 sas dsad .com 会发生致命错误。那么如何忽略这些无效的电子邮件?

N.B:我正在使用cakephp 2.6.7

2 个答案:

答案 0 :(得分:2)

如果电子邮件地址构造不正确,

CakeEmail会抛出SocketException。抓住异常并忽略它。

选项1:发送多封电子邮件

$email = new CakeEmail();
$to = array('sattar.kuet@gmail.com','sas dsad .com');  

foreach ($to as $emailAddress)  {
    try {
        $email->to($emailAddress);
        $email->send();
    } catch(SocketException $e) {
        //Do nothing  
    }

    $email->reset();
}

选项2:发送一封电子邮件

$email = new CakeEmail();
$to = array('sattar.kuet@gmail.com','sas dsad .com');  

foreach ($to as $emailAddress)  {
    try {
        $email->addTo($emailAddress);
    } catch(SocketException $e) {
        //Do nothing  
    }
}

$email->send();

请参阅CakeEmail::addTo()

答案 1 :(得分:0)

您可以使用以下代码删除所有无效的电子邮件:

<?php
$len=count($array);
for ($i=0;$i<$len;$i++)
  if (preg_match('^[a-z0-9!#$%&*+/=?^_`{|}~-]+(?:.[a-z0-9!#$%&*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?.)+(?:[a-z]{2,4}|museum|travel)$/i',$array[$i]))
      echo $array[$i];
?>

Remove invalid email format in PHP