从数据库发送电子邮件到多个地址


Send email to multiple addresses from database

我想做一个小的联系形式,在其中我可以发送电子邮件给多个用户在一个数据库中,我试图只是选择所有的电子邮件,然后使用while循环发送到每一个,但它只是发送到我的数据库中的第一封电子邮件,而不是其余的。我不知道我哪里出错了

if(isset($_POST['submit'])) {
  $body= $_POST['body'];
  $subject= $_POST['subject'];
  $user = $_SESSION["name"];
  $sql = "SELECT * FROM $user";
  $result = $conn->query($sql);
  while($row = mysqli_fetch_array($result)){
      $email = $row["contact_email"];
      mail($email, $subject, $body,'From: myemail@gmail.com');
  }
}

假设您有以下表格:

用户
+----+-------+
| id | name  |
+----+-------+
|  1 | Boss  |
|  2 | Boris |
+----+-------+
create table users(
 id int auto_increment primary key,
 name varchar(255) not null
);

电子邮件
+---------+-----------------+
| user_id |      email      |
+---------+-----------------+
|       1 | boss1@boss.com  |
|       1 | boss2@boss.com  |
|       1 | boss3@boss.com  |
|       2 | boris1@boss.com |
|       2 | boris2@boss.com |
+---------+-----------------+
create table emails(
 user_id int references users(id),
 email varchar(255) not null
);

注意user_idusers表的引用。

现在在PHP

if(isset($_POST['submit'])) {
  $body = $_POST['body'];
  $subject = $_POST['subject'];
  $user = mysqli::real_escape_string($_SESSION["name"]);
  $result = $conn->query("SELECT id from users where name='".$user."'");
  $row = mysqli_fetch_array($result);
  $user_id = intval($row["id"]);
  $sql = "SELECT email FROM emails where user_id=".$user_id;
  $result = $conn->query($sql);
  while($row = mysqli_fetch_array($result)){
      $email = $row["email"];
      mail($email, $subject, $body,'From: myemail@gmail.com');
  }
}
相关文章: