【问题标题】:Send multiple email for each user from database specific column从数据库特定列为每个用户发送多封电子邮件
【发布时间】:2017-02-12 09:42:54
【问题描述】:

我正在使用 PHPMailer。

我在email 列的users 表中记录用户电子邮件。我的表中还有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>";
        }
    }
}

?>

【问题讨论】:

标签: php mysql email


【解决方案1】:

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

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循环中试试这段代码。

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 表示盲抄本。以逗号分隔的更多收件人列表,其他收件人不会看到。

【讨论】:

  • 很抱歉,它不起作用。我的发件人电子邮件地址已经有效。我只想为每个用户的邮件地址发送电子邮件,但 PHPMailer 会发送这样的电子邮件。表格顶部的第一个用户,如果表格中有 3 个用户,则获得 3 封邮件。
  • 如果上面的代码/答案对您有用,请告诉我。 @AnılKıral
  • 它有效但不完全:) 现在,我可以向他们所有人发送电子邮件,但他们的电子邮件收件人部分显示了我所有的电子邮件列表。我只是想把他的电子邮件显示在 to:cell。 @Sumon Sarker
  • 您可以添加列表。 $mail->addCC('cc@example.com');$mail->addBCC('bcc@example.com'); @AnılKıral
  • 但这不是我的问题。收到邮件的用户会看到我所有的邮件列表他们的收件人:部分,但他们必须只看到一个用户拥有的电子邮件地址。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-08
  • 2015-10-13
  • 2017-02-01
  • 1970-01-01
  • 2016-07-17
相关资源
最近更新 更多