我不是PHP/MySQL的专家,但我通常可以得到的东西工作与一些研究和试验,但这一个我似乎无法像我想要的工作...PHP邮件数据从SQL表
我运行了分类广告网站,并计划设置一个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 = "[email protected]";
//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);
}
?>
任何帮助将不胜感激!
谢谢!
另外,您应该停止使用mysql函数,因为那些现在已被弃用。研究使用PDO或mysqli。 – 2013-02-27 01:57:20
谢谢!它现在有效。 – user2113517 2013-02-27 02:21:30
@ user2113517现在不要忘记接受答案...... – 2013-02-27 02:24:48