从PhpMailer发送的重复邮件

时间:2015-08-10 12:55:21

标签: php email phpmailer

我创建了一个代码,其中邮件被发送给具有不同身体的不同人,但仅在满足某些条件的情况下。我的代码如下:

set_time_limit(300);
require_once("class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->Host = "*********";
$mail->SetFrom('*********');
$mail->Subject = "System Change";
$add = array("a", "b");
foreach ($add as $address) {
    $mail->clearAttachments();
    $mail->clearAllRecipients();

    if ($Credit == 'N' && $CMU == 'N') {
        if ($Ops_Approval == 'Approved' && $Risk_Approval == 'Approved' && $Finance_Approval == 'Approved') {
            if ($SeniorManagement == 'Y') {
                if ($address == "a") {
                    $mail->AddAddress('********');
                    $mail->MsgHTML("Mail1");
                    $mail->send();
                    if ($mail->Send()) {
                        echo "Mail 1";
                    } else echo "ERROR IN SENDING MAILS";
                    exit;
                }
                if ($address == "b") {
                    $mail->AddAddress('****');
                    $mail->MsgHTML("Mail2");
                    $mail->send();
                    if ($mail->Send()) {
                        echo "Mail 2";
                    } else echo "ERROR IN SENDING MAILS";
                    exit;
                }
            }
        }
    }
}

工作正常 - 正在发送邮件。 什么不工作 - 两封邮件都有相同的主体,即Mail1。 我尝试创建不同的if循环,但得到相同的结果。感谢任何建议:)

2 个答案:

答案 0 :(得分:2)

我们不会认为发送了2封邮件,因为您已经写了退出,而不是其他部分。 试试这个: -

if ( $address == "a" ) {
    $mail->AddAddress('********');
    $mail->MsgHTML("Mail1");
    //$mail->send();
    if($mail->Send()) {
        echo "Mail 1";
    } else {
        echo "ERROR IN SENDING MAILS";
        exit;
    }
}
if ( $address == "b" ) {
    $mail->AddAddress('****');
    $mail->MsgHTML("Mail2");
    //$mail->send(); 
    if($mail->Send()) {
        echo "Mail 2";
    } else {
        echo "ERROR IN SENDING MAILS";
        exit;
    }
}

答案 1 :(得分:1)

您在if中再次使用Send()两次。您可以删除if($mail->send()){上方的行。也不要忘记将代码放在括号内的else之后,否则它不会执行退出。