向所有订阅用户发送电子邮件,从sql DB中选择并发送,不工作

时间:2014-03-24 13:25:48

标签: php html sql email

我有一个HTML输入表单,用户可以在其中订阅简报。他们输入他们的名字,姓氏和电子邮件,然后将它们添加到我的sql数据库中的表中。

我创建了第二个html表单,其中“admin”可以在正文文本框中输入主题和消息,然后单击“发送”。

现在,当他们点击发送时应该发生的是,该主题/正文将被发送到sql数据库中的所有用户,但它无法正常工作!有什么帮助吗?代码如下:

<?php

$user = "example"; 
$password = "example"; 
$host = "example"; 
$dbase = "example"; 
$table = "example"; 

$from= 'example';//specify here the address that you want email to be sent from

$subject= $_POST['subject'];
$body= $_POST['body'];

// Connection to DBase 
$dbc= mysqli_connect($host,$user,$password, $dbase) 
or die("Unable to select database");

$query= "SELECT * FROM $table";
$result= mysqli_query ($dbc, $query) 
or die ('Error querying database.');

while ($row = mysqli_fetch_array($result)) {
$firstname= $row['firstname'];
$lastname= $row['lastname'];
$email= $row['email'];

$msg= "Dear $firstname $lastname,\n$body";
mail($to, $subject, $msg, 'From:' . $from);
echo 'Email sent to: ' . $email. '<br>';
}

mysqli_close($dbc);
?>

我最后收到确认信息“发送到的电子邮件(它会显示电子邮件)”,但它实际上并没有发送,而且我在第28行收到“未定义的变量:”。

(我已将目的放在最顶层)

2 个答案:

答案 0 :(得分:2)

在您的代码中

while ($row = mysqli_fetch_array($result)) {
  $firstname= $row['firstname'];
  $lastname= $row['lastname'];
  $email= $row['email'];

  $msg= "Dear $firstname $lastname,\n$body";
  mail($to, $subject, $msg, 'From:' . $from);
  echo 'Email sent to: ' . $email. '<br>';
}

您的电子邮件地址存储在$email,但您正在向$to发送电子邮件。你的邮件行应该是:

mail($email, $subject, $msg, 'From:' . $from);

此外,您应该相应地配置服务器以使mail()正常工作。阅读更多http://ie1.php.net/manual/en/function.mail.php

答案 1 :(得分:1)

变化

mail($to, $subject, $msg, 'From:' . $from);

mail($email, $subject, $msg, 'From:' . $from);