您好我是新手,只对PHP有基本的了解,所以任何帮助都会受到欢迎。基本上我试图通过PHP发送一个可以有多个收件人的电子邮件。内容还需要按照特定条件显示用户列表。我有脚本来查看数据库并发送电子邮件,但它只发送给一个人,只列出内容中的一个人。请有人可以建议如何将其更改为电子邮件/显示给多个收件人。我知道应该至少有三个人被送到。
任何帮助/指针都是最受欢迎的。谢谢。
<?php
session_start();
require_once('../config.php');
$errmsg_arr = array();
$errflag = false;
$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if(!$link) {
die('Failed to connect to server: ' . mysql_error());
}
$db = mysql_select_db(database_name);
if(!$db) {
die("Unable to select database");
}
$result = mysql_query("SELECT username FROM users WHERE user_type='admin'");
while($result_email = mysql_fetch_array($result))
$to = $result_email['username'];
$result2 = mysql_query("SELECT * FROM users
WHERE ticked='1' AND NOT user_type='super'");
while($result2 = mysql_fetch_array($result2))
$body = $result2['fname'] . " " . $result2['lname'] . " , " . $result2['username'];
mail ($to, 'Subject', $body);
?>
答案 0 :(得分:1)
你可以做到这一点。他们只需要用逗号分隔。
$to = "email@email.com, email2@email2.com";
参考:http://php.net/manual/en/function.mail.php
此外,您的代码粘贴方式有点令人困惑。但是,如果您在while循环中加载所有电子邮件。然后你想在一段时间后发送它。例如:
你希望它是:
//create an empty $to string
$to = '';
//add all the emails
while($emails as $email)
{
$to .= $email . ',';
}
//remove the last comma
rtrim($to, ",");
//send away
mail($to, $subject, $message);
答案 1 :(得分:1)
你的代码错了。你使用它会有错误。你需要使用implode在电子邮件之间添加逗号。检查你的PHP。我纠正了,但你必须使用while声明。你有一个作业的多个mysql查询。你也不应该使用mysql_query。使用PDO代替......
你应该像这样使用它
<?php
while($row = mysql_fetch_array($result2))
{
$addresses[] = $row['username'];
}
$to = implode(", ", $addresses);
?>
使用您的代码
<?php
session_start();
require_once('../config.php');
$errmsg_arr = array();
$errflag = false;
$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if(!$link) {
die('Failed to connect to server: ' . mysql_error());
}
$db = mysql_select_db(database_name);
if(!$db) {
die("Unable to select database");
}
$result = mysql_query("SELECT username FROM users WHERE user_type='admin'");
while($row = mysql_fetch_array($result2))
{
$addresses[] = $row['username'];
}
$to = implode(", ", $addresses);
$result2 = mysql_query("SELECT * FROM users
WHERE ticked='1' AND NOT user_type='super'");
$body = mysql_fetch_array($result2);
$body = $result2['fname'] . " " . $result2['lname'] . " , " . $result2['username'];
mail ($to, 'Subject', $body);
?>
答案 2 :(得分:0)
您使用语句$to = $result_email['username'];
重复覆盖$的值。您应该改为以逗号分隔的列表。但为了善良,
答案 3 :(得分:0)
您对mail()的调用不在循环中,因此它只会发送一封电子邮件。
你设置$ to的while循环只是在每次循环迭代时覆盖前一个值。
所以最后$ to将被设置为第一个查询返回的最后一个用户名。并且你的$ body将成为你第二次查询返回的最后一行所需的主体。