使用PHP MAILER发送电子邮件时出错

时间:2014-05-04 03:11:05

标签: php

我有一个数据库,其中有一个名为mailing_list的表,它有三列first_name,last_name和email。这张桌子有两个人 第一个名字是:x1姓氏是:y1,电子邮件是:x1@yahoo.com 第二个名字是:x2姓氏是:y2,电子邮件是:x2@yahoo.com 我正在尝试使用PHP Mailer,代码如下,正在发生的事情是x1获得相同的电子邮件两次一个“亲爱的x1 y1”,第二次用“亲爱的x2 y2”。第二个名字x2得到它一次很好。我不希望同一封电子邮件多次发送给该人,我知道循环有问题。有什么帮助吗? sendemail.php页面

 <?php
    require("config.php");

    if(isset($_POST['submit']))
    {

        require("class.phpmailer.php"); 
        $mail = new PHPMailer();        

        $query = "SELECT * FROM mailing_list";
        $result = mysqli_query($connect, $query)    
        or die('Error querying the database!');


            $mail->IsSMTP(); 
            $mail->Host="smtp.gmail.com";       
            $mail->Username="myEmailAdd"; 
            $mail->Password="myPassWord"; //SMTP_PASS;
            $mail->SMTPAuth=true;
            $mail->SMTPSecure = 'tls'; 
            $mail->From ="myEmailAdd";  
            $mail->FromName ="CSCA";    

        while($row = mysqli_fetch_array($result))
        {

            $first_name = $row['first_name'];
            $last_name = $row['last_name'];
            $to = $row['email'];

            $mail->AddAddress($to); 


            $mail->Subject= $_POST['subject'];

            $mail->Body = "Dear $first_name $last_name,\n" . $_POST['body'];
            $mail->WordWrap = 50;

            if(!$mail->Send()) 
            {
                echo 'Message was not sent.';
                echo 'Mailer error: ' . $mail->ErrorInfo;
            } 
            else 
            {
                echo 'Message has been sent.';
                echo 'Email sent to ' . $to . '<br/>';
            }           

        }

        mysqli_close($connect); 
    }   
    ?>

这是电子邮件表格

<body>
    <form method="post" action="sendemail.php">
            <label for="subject">Subject of email:</label><br/>
            <input type="text" id="subject" name="subject" size="60"/><br/>
            <label for="body">Body of mail:</label><br/>
            <textarea id="body" name="body" rows="8" cols="60"></textarea><br/>
            <input type="submit" name="submit" value="Submit"/>             
    </form>
</body>

1 个答案:

答案 0 :(得分:0)

AddAddress方法只是将另一个接收者的电子邮件地址添加到已经存在的地址,因此,当您使用{{1}时,您最终第二次接收电子邮件时,这是合乎逻辑的。在一个循环中。

在使用AddAddress添加地址之前,只需在循环中调用clearAddresses方法 - 这将清除当前的接收电子邮件地址列表,并为您提供“重新开始”,以便下一个添加的地址将是当前发送邮件的唯一接收电子邮件地址。