gpt4 book ai didi

PHP 从 SQL 表邮寄数据

转载 作者:行者123 更新时间:2023-11-29 14:00:46 25 4
gpt4 key购买 nike

我不是 php/mysql 专家,但我通常可以通过一些研究和试验让事情发挥作用,但这个我似乎无法像我想要的那样开始工作......

我经营一个分类网站,我计划设置一个 cron 作业(我可以做的 cron 作业)并向已发布广告 30 天的用户发送提醒电子邮件。我使用 date_sub 和 curdate 得到了很好的日期。我的查询从广告已发布 30 天的数据库中提取我想在电子邮件中使用的所有表格。

我可以获取要发送的电子邮件,其中包含发帖者姓名、电子邮件和 html 消息,但它仅发送到它查询的第一个电子邮件地址。我认为这是一个循环问题?但我似乎无法弄清楚。

我的脚本发布在下面 - 我为困惑表示歉意,因为我说过我不是这方面的专家,但我基本上按照我想要的方式工作,除了它只会发送到第一个显示的广告。

sql 查询中的大多数表名都包含我计划在 html 消息中使用的数据。

    <?php
header("Content-type: text/plain");

// OPEN DATABASE
define('DB_HOST','localhost');
define('DB_USER','');
define('DB_PASS','');
define('DB_NAME','');

mysql_connect(DB_HOST, DB_USER, DB_PASS) or die("Connetion to database failed!");
mysql_select_db(DB_NAME);

joinDateFilter();

// WHOSE AD IS 30 DAYS OLD
function joinDateFilter(){
$query = mysql_query("SELECT name,title,email,idPost,password FROM oc_posts WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) = CAST(insertDate AS date)");
$mail_to = "$email";
while ($row = mysql_fetch_array($result)){
echo $row['name']." - ".$row['title']." - ".$row['email']."\n";
echo $mail_to = $row['email'].", ";
echo $title=$row["title"];
echo $name=$row["name"];
echo $idPost=$row["idPost"];
echo $password=$row["password"];
}
if (!empty($mail_to)){
sendEmail($mail_to,$email,$name,$title,$idPost,$password);
}
}

// SEND EMAIL
function sendEmail($mail_to,$email,$name,$title,$idPost,$password) {
$mail_to ="$mail_to";
$email ="$email";
$name = "$name";
$title = "$title";
$idPost = "$idPost";
$password = "$password";
$from = "no-reply@2tradeit.com";
//begin of HTML message
$message = "<html>
<body bgcolor=\"#FFFFFF\">
Hello, $name, your ad $title is 30 days old etc...
</body>
</html>";
//end of message
$headers = 'From: '.$from."\r\n" .
'Reply-To:'.$_POST['email']."\r\n" .
"Content-Type: text/html; charset=iso-8859-1\n".
'X-Mailer: PHP/' . phpversion();
mail($mail_to, "Your ad is 30 days old", $message, $headers);
}
?>

任何帮助将不胜感激!

谢谢!

最佳答案

您需要在一段时间内执行 sendEmail 函数。现在发生的情况是,它会遍历所有返回的行,设置变量,覆盖变量,然后发送一次电子邮件。尝试这样的事情。请注意,if 语句现在位于 while block 内。

while ($row = mysql_fetch_array($result)){
echo $row['name']." - ".$row['title']." - ".$row['email']."\n";
echo $mail_to = $row['email'].", ";
echo $title=$row["title"];
echo $name=$row["name"];
echo $idPost=$row["idPost"];
echo $password=$row["password"];
if (!empty($mail_to)){
sendEmail($mail_to,$email,$name,$title,$idPost,$password);
}
}

现在它将发送电子邮件,然后处理下一行。这意味着它现在将为每一行发送电子邮件。

关于PHP 从 SQL 表邮寄数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15102765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com