2011-05-31 162 views
0

我想循環通過5行中的一行發送電子郵件與PHPmailer。每行最多可以包含5個電子郵件地址,但並非全部都可以。我的循環方法的工作原理,但如果沒有電子郵件地址可用NULL存在,電子郵件不會被髮送。我如何讓我的腳本忽略NULL。另外,列是否有更好的循環過程?phpmailer列循環&跳過NULLs

 
    include("conn.php"); 
    require("class.phpmailer.php"); 
    // require("class.smtp.php"); 
    // require("class.pop3.php"); 
    $conn = mssql_connect($server, $user, $pass) or die("ERROR: Connection to MYSERVER failed"); 
    $select = mssql_select_db($database, $conn) or die("ERROR: Selecting database failed"); 

    $sql1 = "SELECT Email1 as email1, Email2 as email2, Email3 as email3, Email4 as email4, Email5 as email5 FROM $table2 where IPaddress='000.000.000.000'"; 
    $result1 = mssql_query($sql1); 
    while ($row1 = mssql_fetch_assoc($result1)) { 

     $EmailADD1 = $row1["email1"]; 
     $EmailADD2 = $row1["email2"]; 
     $EmailADD3 = $row1["email3"]; 
     $EmailADD4 = $row1["email4"]; 
     $EmailADD5 = $row1["email5"]; 


    //error_reporting(E_ALL); 
    error_reporting(E_STRICT); 
    ini_set('log_errors', 'On'); 
    ini_set('display_errors', 'On'); 
    date_default_timezone_set('America/Toronto'); 
    //include ("class.phpmailer.php");    
    //include("class.smtp.php"); 
    $mail = new PHPMailer(); 
    $mail->SetLanguage('en', 'C:\PHP\mail\language\\'); 
    $mail->IsSMTP();        // set mailer to use SMTP 
    $mail->Host = "[email protected]"; // specify main and backup server 
    $mail->Port = 25;        // set the SMTP port 
    $mail->SMTPAuth = true;       // turn on SMTP authentication 
    $mail->Username = "me";   // SMTP username 
    $mail->Password = "xxxxx";     // SMTP password 
    $mail->From = "[email protected]"; 
    $mail->FromName = "Mailer"; 
    //$body = $mail->getFile('contents.html'); 
    //$body = eregi_replace("[\]", '', $body); 
    $mail->AddReplyTo("[email protected]", "JT"); 
    $mail->From = "[email protected]"; 
    //$mail->AddAddress("[email protected]", "JohnTest"); 
    $mail->FromName = "Me"; 
    $mail->Subject = "PHPMailer Test"; 
    $mail->Body = "Hi,
This is the HTML BODY
$IP"; //HTML Body $mail->WordWrap = 50; // set word wrap $mail->AddAddress($EmailADD1, "IPscoreBounceInfo1"); $mail->AddAddress($EmailADD2, "IPscoreBounceInfo2"); $mail->AddAddress($EmailADD3, "IPscoreBounceInfo3"); $mail->AddAddress($EmailADD4, "IPscoreBounceInfo4"); $mail->AddAddress($EmailADD5, "IPscoreBounceInfo5"); ...

回答

1

您可以通過從服務器中消除MySQL查詢中的NULL來解決此問題。嘗試這個MySQL查詢,而應該消除空值:

SELECT * FROM (
SELECT Email1 as email FROM $table2 where IPaddress='000.000.000.000' 
UNION 
SELECT Email2 as email FROM $table2 where IPaddress='000.000.000.000' 
UNION 
SELECT Email3 as email FROM $table2 where IPaddress='000.000.000.000' 
UNION 
SELECT Email4 as email FROM $table2 where IPaddress='000.000.000.000' 
UNION 
SELECT Email5 as email FROM $table2 where IPaddress='000.000.000.000' 
) WHERE email IS NOT NULL 
+0

謝謝landoncz,這工作......稍作修改。 SELECT Email1 as email FROM IPreputation where IPaddress ='000.000.000.000'and Email1 IS NOT NULL UNION SELECT Email2 as email FROM IPreputation where IPaddress ='000.000.000.000'and Email2 IS NOT NULL UNION SELECT Email3 as email FROM IPreputation where IPaddress =' 000.000.000.000'和Email3 IS NOT NULL UNION SELECT Email4作爲電子郵件FROM IPreputation其中IPaddress ='000.000.000.000'和Email4 IS NOT NULL UNION SELECT Email5作爲電子郵件FROM IPreputation其中IPaddress ='000.000.000.000'和Email5 IS NOT NULL – 2011-06-01 13:27:58