繁体   English   中英

从数据库特定列为每个用户发送多封电子邮件

[英]Send multiple email for each user from database specific column

我正在使用PHPMailer。

我在email列的users表中记录用户email 我的表中也有category列。 我想向这些用户发送电子邮件。 例如,我想向在category列中具有tech价值的用户发送电子邮件。 我可以这样做但是当我发送时, PHPMailer发送我的电子邮件就像

first user -> first column email
second user -> first column email
               second column email
third user ->  first column email
               second column email
               third column email

我只想发送第一个user -> first column emailsecond user -> second column email

我现在有这些代码。

<?php
require_once("class.phpmailer.php");

if($_POST['message']){

    $mail = new PHPMailer(); 
    $mail->IsSMTP(); 
    $mail->IsHTML(true);
    $mail->Host = "host.name.net"; 
    $mail->Port = 587; 
    $mail->SMTPAuth = true; 
    $mail->CharSet  ="utf-8";
    $mail->Username = "mail@mymail.com"; 
    $mail->Password = "pass"; 
    $mail->SetFrom("hi@mymail.com", "my mail name");
    $categorychoose = $_POST['categorychoose'];    

    $query = (" SELECT email FROM users WHERE category LIKE '$categorychoose' ");

    $result = mysql_query($query);
    while( $data = mysql_fetch_assoc($result) )
    {
        $mail->AddAddress($data["email"]);
        $mail->Subject = $_POST['subject']; 
        $mail->Body = $_POST['message'];

        if(!$mail->Send())
        {
            echo "<h4>not send</h4>";
        } else {
            echo "<h4>send</h4>";
        }
    }
}

?>

我从您更新的代码中编辑了我以前的代码。

require_once("class.phpmailer.php");

if($_POST['message']){
    $mail = new PHPMailer(); 
    $mail->IsSMTP(); 
    $mail->IsHTML(true);
    $mail->Host = "host.name.net"; 
    $mail->Port = 587; 
    $mail->SMTPAuth = true; 
    $mail->CharSet  ="utf-8";
    $mail->Username = "mail@mymail.com"; 
    $mail->Password = "pass"; 
    $mail->SetFrom("hi@mymail.com", "my mail name");
    $categorychoose = $_POST['categorychoose'];

    $query = (" SELECT email FROM users WHERE category LIKE '$categorychoose' ");

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

    $result = mysql_query($query);
    while( $data = mysql_fetch_assoc($result) ){
        $mail->AddAddress($data["email"]);            
    }

    if(!$mail->Send()){
        echo "<h4>not send</h4>";
    } else {
        echo "<h4>send</h4>";
    }
}

此代码应该适合您。

尝试使用此代码以上循环。

while( $data = mysql_fetch_assoc($result) ){
    #$mail->AddAddress($data["email"]); /*Common format*/
    #$mail->addCC($data["email"]); /*List emails to recipient*/
    $mail->addBCC($data["email"]); /*Never show List emails to recipient*/
}

注1: CC表示碳复制。 所有其他收件人将看到的以逗号分隔的更多收件人列表。

注2: BCC表示盲碳复制。 以逗号分隔的更多收件人列表,任何其他收件人都不会看到这些收件人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM