Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP创建电子邮件列表_Php_Mysql_Email_Mysqli - Fatal编程技术网

使用PHP创建电子邮件列表

使用PHP创建电子邮件列表,php,mysql,email,mysqli,Php,Mysql,Email,Mysqli,我正在尝试创建一个电子邮件列表。我试过十几种不同的方法。我的最后一次尝试对我来说是最有意义的,但它似乎只发送给名单上的最后一个人,而不是其他人。我是做错了什么,还是应该换一种方式?当我查看页面时,它会为列表中的每个用户发布“已发送邮件”,尽管电子邮件实际上只发送给列表中最后一个人 <?php include '../../manage.php'; include '../../sql.php'; $sql = "SELECT email FROM users WHERE email_li

我正在尝试创建一个电子邮件列表。我试过十几种不同的方法。我的最后一次尝试对我来说是最有意义的,但它似乎只发送给名单上的最后一个人,而不是其他人。我是做错了什么,还是应该换一种方式?当我查看页面时,它会为列表中的每个用户发布“已发送邮件”,尽管电子邮件实际上只发送给列表中最后一个人

<?php include '../../manage.php'; include '../../sql.php';

$sql = "SELECT email FROM users WHERE email_list=1";
$sql = mysqli_query($con,"$sql");
while($row = mysqli_fetch_assoc($sql)){

$to = $row[email];
$subject = "Quote Requested";
$message = "Testing.";
$from = "email@mydomain.com";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
echo "Mail Sent.";

}
?>

首先,您应该解决两件事:

$to = $row[email];
应该是

$to = $row['email'];
另外,您不应该使用mysql_*函数,因为它们已经被弃用了,而且已经弃用了很长时间。相反,应该使用或扩展名

对于您的问题,您应该执行以下操作:

if(mail($to,$subject,$message,$headers)) {
    echo "Mail Sent to ".$to;
} else {
    echo "Mail Failed to Send to ".$to;
}

它每次都说“邮件已发送”,因为当出现故障时,没有任何东西可以阻止它。

var\u dump($to)在每个
中,而
iteration@u_mulder刚刚打印出以下内容:字符串(27)”email1@domain.com“已发送邮件。字符串(24)”email2@domain.com“邮件已发送。但它仍然只发送给最后一个人。我放置了
var\u转储($to)右下方
$to=$row[电子邮件]
这是正确的位置吗?我刚刚测试了发布的整个代码,只创建了我自己的连接字符串,即使用手册示例
$con=mysqli_connect(“myhost”、“myuser”、“mypassw”、“mybd”)或die(“Error”)。mysqli_Error($con))。我创建了一个包含5个条目的数据库,其中3个是
email\u list
1。我看绝对没有问题,收到了三封电子邮件。我唯一的想法是潜在地全球化
$con
变量。@TheHumbleRat我查看了它,在列表中的所有用户中,唯一收到电子邮件的是一个不属于我们组织的电子邮件地址。Outlook会自动将电子邮件过滤为垃圾邮件,即使它来自组织地址。必须将其设置为根本不过滤垃圾邮件,才能正常工作。感谢您帮助测试它@斯汤纳伦很高兴能帮上忙。看起来我们都学到了一些新东西。我不会使用
echo“邮件发送到”。$to数据库中应该有数百封电子邮件,如果不是数千封的话。最好使用某种形式的
foreach
(循环)计数器来显示一个“数字”中发送了多少。附言:如果真的发生这种情况,我不是一个悲观的选民。有人认为,每当有人在一个被否决的答案中发表评论时,马上就会认为是“那个”被否决的人(我经常看到这种情况发生)。然而,关于
$to=$row['email'],您可能是对的email
用于计算字符串'email',这意味着它仅在PHP尝试自动更正错误时才起作用。至于回音,他已经在每次打印“已发送邮件”。还不如把实际有用的信息放在那些回音里。我相信他最终会想出更好的方法来跟踪这些事情。我相信你也是对的。当然,回音部分应该在环路之外进行。