【问题标题】:Use PHP to create an Email list使用 PHP 创建电子邮件列表
【发布时间】:2023-03-14 14:36:01
【问题描述】:

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

<?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.";

}
?>

【问题讨论】:

  • var_dump($to); 在每个 while 迭代中
  • @u_mulder 刚刚打印出以下内容: string(27) "email1@domain.com" Mail Sent.string(24) "email2@domain.com" Mail Sent。但它仍然只发送给最后一个人。我将var_dump($to); 放在$to = $row[email]; 的正下方,放置它的位置是否正确?
  • 我刚刚测试了发布的整个代码,只使用手册示例$con = mysqli_connect("myhost","myuser","mypassw","mybd") or die("Error " . mysqli_error($con)); 创建了我自己的连接字符串,即$con。我创建了一个包含 5 个条目的数据库,其中 3 个是 email_list 1。我认为绝对没有问题,并收到了三封电子邮件。我唯一的想法是可能将$con 变量全球化。
  • @TheHumbleRat 我调查了它,在列表中的所有用户中,唯一收到电子邮件的是一个不属于我们组织的电子邮件地址。 Outlook 会自动将电子邮件过滤为垃圾邮件,即使它来自组织地址。必须将其设置为根本不过滤垃圾邮件才能正常工作。感谢您帮助测试它!
  • @StauntonAllen 很高兴能为您提供帮助。看起来我们都学到了一些新东西。

标签: php mysql email mysqli


【解决方案1】:

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

$to = $row[email];

应该是

$to = $row['email'];

此外,您不应该使用 mysql_* 函数,因为它们已被弃用并且已经被弃用了很长时间。相反,应该使用 mysqliPDO_MySQL 扩展名。

对于你的问题,你应该这样做:

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

每次都说“邮件已发送”,因为发生故障时没有什么可以阻止它。

【讨论】:

  • 如果数据库中有成百上千的电子邮件,我不会使用echo "Mail Sent to ".$to;。最好使用某种形式的foreach(循环)计数器来显示“数字”中发送了多少。 P.s.:如果发生这种情况,我不是反对者。有些人认为,每当有人在一个被否决的答案中发表评论时,立即认为是有问题的“那个”人这样做了。 ;-)(我经常看到这种情况发生)。但是,您可能对$to = $row['email']; 是正确的,但很多时候,数组不应该包含引号。干杯
  • @Fred-ii-,我绝对正确地在字符串键周围加上引号。如果你不加引号,它是一个未定义的常量email 被假定为字符串'email',这意味着它只有在 PHP 尝试自动更正错误时才有效。至于回显,他已经每次都打印出“已发送邮件”。不妨将实际有用的信息放在这些回声中。我相信他最终会想出更好的方法来跟踪这些事情。
  • 我相信你也是对的。当然,回显部分应该在循环之外完成。
猜你喜欢
  • 2013-07-26
  • 2016-11-29
  • 2017-02-14
  • 2016-07-21
  • 2014-12-20
  • 2011-08-12
  • 2017-09-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多