2013-06-03 1 views
1

У меня есть максимум 5 писем, которые должны быть отправлены через Swift Mailer, но я никогда не знаю, сколько из них будет недействительным. Недействительные электронные письма = ""Получить swiftmailer, чтобы игнорировать плохие письма в php

Мне было интересно, есть ли способ получить быструю почту, чтобы игнорировать недействительные письма вместо того, чтобы давать Fatal error и ничего не отправлять. Я посмотрел онлайн, и я увидел, что они упомянули, что я должен попытаться поймать плохие электронные письма до этого, но я не совсем понял синтаксис или то, что они пытались сказать. Во всяком случае, вот мой код до сих пор.

// send приветственная письмо функции send_email ($ информации) {

//format each email 
    $body = format_email($info,'html'); 
    $body_plain_txt = format_email($info,'txt'); 

    //setup the mailer 
    $transport = Swift_MailTransport::newInstance(); 
    $mailer = Swift_Mailer::newInstance($transport); 
    $message = Swift_Message::newInstance(); 
    $message ->setSubject('Your Party Information'); 
    $message ->setFrom(array('[email protected]' => '[email protected]')); 
    $message ->setTo(array($info['Email1'],$info['Email2'],$info['Email3'],$info['Email4'],$info['Email5'] => $info['$firstname'])); 

    $message ->setBody($body_plain_txt); 
    $message ->addPart($body, 'text/html'); 

    $result = $mailer->send($message); 

    return $result; 

} 

$emails1 = $user2['Email'] or " "; 
$emails2 = $user2['Email'] or " "; 
$emails3 = $user2['Email'] or " "; 
$emails4 = $user2['Email'] or " "; 
$emails5 = $user2['Email'] or " "; 
+0

Это не ответ, но вы назначаете '$ user2 ['Email']' пяти различным переменным. – andrewsi

+0

my bad забыл изменить цифры на пользователе, он должен соответствовать номеру электронной почты – user2444298

ответ

2

Как насчет просто зачисток недопустимых сообщений электронной почты заранее, путем проверки с filter_var, если электронные письма действительны?

... 

$emails = array(); 
if (filter_var($info['Email1'], FILTER_VALIDATE_EMAIL)) 
    $emails[] = $info['Email1']; 
if (filter_var($info['Email2'], FILTER_VALIDATE_EMAIL)) 
    $emails[] = $info['Email2']; 
if (filter_var($info['Email3'], FILTER_VALIDATE_EMAIL)) 
    $emails[] = $info['Email3']; 
if (filter_var($info['Email4'], FILTER_VALIDATE_EMAIL)) 
    $emails[] = $info['Email4']; 
if (filter_var($info['Email5'], FILTER_VALIDATE_EMAIL)) 
    $emails[$info['Email5']] = $info['$firstname']; 

... 

$message ->setTo($emails); 
+0

Я в замешательстве, как это работает, я попробовал простое копирование и вставку, оно перестало выдавать мне сообщение об ошибке, но никаких сообщений электронной почты не отправлено. – user2444298

+0

@ user2444298 Он использует функцию 'filter_var', чтобы проверять различные электронные письма, и если они подтвердят это, он добавит его в массив' $ emails'. Только электронные письма, которые были проверены, добавляются в массив '$ emails', поэтому при использовании' $ message-> setTo ($ emails) '(если синтаксис прав в вашем примере, я не использую swiftmailer), то это будет означать, что мы удалили (или, точнее, никогда не добавили) электронные письма, которые недействительны для массива. Если вы хотите проверить, какие письма * были проверены, вы можете использовать 'print_r ($ emails)' после всех 'filter_var'ing или использовать' var_dump ($ emails) '. – h2ooooooo