2015-12-11 1 views
3

я могу узнать отвергнут адрес в Swiftmailer из -> Сетто (массива (с помощью следующего кода:Выявление отклоненных адресов в Cc и Bcc также - как?

$mailer = Swift_Mailer::newInstance(...); 
$message = Swift_Message::newInstance(...) 
->setFrom(...) 
->setTo(array(
'[email protected]' => 'Receiver Name', 
'[email protected]' => 'A name', 
'[email protected]' => 'Other Name' 
)) 
->setBody(...) 
; 

// Pass a variable name to the send() method 
if (!$mailer->send($message, $failures)) 
{ 
echo "Failures:"; 
print_r($failures); 
} 

/* 
Failures: 
Array (
0 => [email protected], 
1 => [email protected] 
) 
*/ 

Теперь я хочу, чтобы выяснить, отвергнут адрес из Cc и Bcc поля тоже Как я могу добавить.. ? аналогичный код есть ли учебник или обходной путь там нет примера в SwiftMailer учебнике

ответ

0

вы можете использовать try-catch блок, где вы установите на, куб.см и ОЦК адреса электронной почты

от the manual..:

Если добавить получателей автоматически на основе источника данных, который может содержать недействительные адреса электронной почты, вы можете предотвратить возможные исключения путем проверки адресов с использованием Swift_Validate::email($email) и только добавление адреса, подтвердите. Другим способом было бы обернуть вызовы в блоке try-catch и обработать setTo(), setCc() и setBcc() в блоке catch и обработать Swift_RfcComplianceException.

Таким образом, вы можете использовать try-catch на $message объекта:

$message = Swift_Message::newInstance(); 
$emails = array(
    '[email protected]' => 'Receiver Name', 
    '[email protected]' => 'A name', 
    '[email protected]' => 'Other Name' 
); 
// loop through emails and set the individually to catch exceptions 
foreach($emails as $email => $name) 
{ 
    try { 
     $message->setTo(array($email => $name)); 
    } catch(Swift_RfcComplianceException $e) { 
     echo "The email ".$email." seems invalid"; 
    } 
} 
// And do the same thing with cc and bcc emails 
$ccEmails = array(
    '[email protected]' => 'CC Receiver Name' 
); 
foreach($ccEmails as $email => $name) 
{ 
    try { 
     $message->setCc(array($email => $name)); 
    } catch(Swift_RfcComplianceException $e) { 
     echo "The email ".$email." seems invalid"; 
    } 
} 

Вы можете установить провалы на переменную, если вы в зависимости от того, как вы хотите, чтобы справиться с ними.

Edit: Если у вас есть массив пользователей с отдельными именами и фамилиями вы можете пользователя ниже:

$users = array(
    array('email' => '[email protected]', 'first' => 'Receiver', 'last' => 'Name'), 
    array('email' => '[email protected]', 'first' => 'A', 'last' => 'name'), 
    array('email' => '[email protected]', 'first' => 'Other', 'last' => 'Name') 
); 
// loop through users and set the individually to catch exceptions 
foreach($users as $user) 
{ 
    try { 
     $message->setTo(array($user['email'] => $user['first'].' '.$user['last'])); 
    } catch(Swift_RfcComplianceException $e) { 
     echo "The email ".$user['email']." seems invalid"; 
    } 
} 
+0

Большое спасибо за Ваш быстрый ответ. Я попробую метод catch. Я хочу отобразить все отклоненные приемники, включая Cc и Bcc, чтобы исправить их в моей базе данных. Кстати, может ли он расколоть массив-приемник в виде: emailadress - firstname - secondname? Потому что имена в моей БД расщепляются в первом и втором именах – estebu