【问题标题】:Send email to multiple addresses from database从数据库向多个地址发送电子邮件
【发布时间】:2016-10-16 11:07:47
【问题描述】:

我正在尝试制作一个小联系表,在其中我可以向数据库中的多个用户发送电子邮件,我试图只选择所有电子邮件然后使用 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');
  }
}

【问题讨论】:

  • 如果每个用户都有一个数据库表,您应该再次仔细查看您的数据库设计,因为这听起来不对。
  • print_r($row["contact_email"]) 检查输出是什么。 @jeroen 是完全正确的。是否为每个用户创建表?
  • @jeroen 我知道这不好,但我想不出任何其他方法:(
  • @kinshuk Lahiri 打印我数据库中的所有电子邮件地址
  • @dfarrelly 当然,有更好的方法。您可以为所有用户创建一个用户表。还有,你把我告诉的print_r()放在哪里了?

标签: php mysql email


【解决方案1】:

假设您有以下表格:

用户

+----+-------+
| 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_id 对users 表的引用。

现在在 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');
  }
}

【讨论】:

  • 谢谢@Cristian,请问我将如何将一封电子邮件插入电子邮件数据库?我只是不熟悉使用引用,你能给我一个示例插入语句吗?
  • 插入电子邮件 SET email="mail@boss.com", user_id=1;
  • 请注意,您必须在 users 表中放置一个存在的 user_id
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-11
  • 2019-01-10
  • 2012-03-31
  • 2014-06-15
  • 2013-07-17
相关资源
最近更新 更多