PHPMailer不能始终如一地工作

时间:2015-12-18 17:01:15

标签: php phpmailer

我有一个使用PHP,MySQL和PHPMailer发送电子邮件的Web应用程序。我遇到的问题是PHPMailer会发送一些电子邮件,但并非总是如此。我想也许是因为不同的电子邮件列表有数据问题?下面是我的代码,它遍历电子邮件地址并发送一些但不是所有的电子邮件。我试图捕捉错误,但我在日志中看不到任何错误。

我如何调试正在发生的事情,以及为什么有些人不发送?

    else if($current_version == 'PROD'){                                        
    date_default_timezone_set('America/New_York');
    require 'PHPMailer-master/PHPMailerAutoload.php';


    $pageURL = 'xxxxxx';

    $subject = "xxxxx ";
    $body = "xxxxxx \r\n";
    $body .= "xxxxx \r\n \r\n";

    $body_html = str_replace("\r\n","<br/>",$body);

    try {

        $mail = new PHPMailer();
        $mail->isSMTP();
        //Enable SMTP debugging
        // 0 = off (for production use)
        // 1 = client messages
        // 2 = client and server messages
        $mail->SMTPDebug = 0;
        $mail->Debugoutput = 'html';

        $mail->Host = 'smtp.gmail.com';
        //Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission
        $mail->Port = 587;
        //Set the encryption system to use - ssl (deprecated) or tls
        $mail->SMTPSecure = 'tls';
        $mail->SMTPAuth = true;
        $mail->Username = "xxx@xxxx.com";
        $mail->Password = "xxxx";
        $mail->setFrom('xxxxx@xxxx.com', 'xxxx');
        $mail->addReplyTo('xxxx@xxxx.com', 'xxxx');

        $mail->Subject = $subject;
        $mail->Body = $body_html;
        $mail->AltBody = $body;

        $sql_email_list = "SELECT email FROM tbl_email 
                            WHERE distro_name='xxxxs'
                                AND is_active='Y' ";
        $result_email_list = mysql_query($sql_email_list);
        $num_email_list = mysql_num_rows($result_email_list);
        $lost_email_list = mysql_result($result_email_list,0,'email');
        $lost_email_array = explode(";",$lost_email_list);
        foreach ($lost_email_array as $key => $val){
            $mail->AddAddress($val);
            if($carrier_email_flag_global == 'ON'){
                $mail->send();
                $mail->ClearAllRecipients();
                $mail->ClearAttachments();
                echo '<hr>Email Sent to: '.$val;
            }
        }

        $sql_email_one = "SELECT table2.email 
                            FROM table1
                                INNER JOIN table2 ON table1.cntct = table2.cntct_id
                            WHERE id='$id' ";
        $result_email_one = mysql_query($sql_email_one);
        $num_email_one = mysql_num_rows($result_email_one);
        for($iiz=0;$iiz<$num_email_one;$iiz++){
            $one_email = mysql_result($result_email_one,$iiz,'email');
            $mail->AddAddress($one_email);  
            if($carrier_email_flag_global == 'ON'){
                $mail->send();
                $mail->ClearAllRecipients();
                $mail->ClearAttachments();
                echo '<hr>Email Sent to: '.$val;
            }                                               
        }



    } catch (phpmailerException $e) {
        echo $e->errorMessage(); //Pretty error messages from PHPMailer
        echo '<hr>ERROR 001';
    } catch (Exception $e) {
        echo $e->getMessage(); //Boring error messages from anything else!
        echo '<hr>ERROR 002';
    }
}

0 个答案:

没有答案