PHP在给定时间自动为多个收件人发送电子邮件

PHP在给定时间自动为多个收件人发送电子邮件,php,Php,我想每天早上8:00自动为多个收件人发送一封电子邮件,输出以下sql查询 $sql10 ="SELECT `X`.`wdate`,`X`.`line`,`X`.`style_no`,`X`.`po_no`,`P`.`order_qty`,`X`.`Line_O ut`,`X`.`Final_QC_Out`,`X`.`Iron_Out`,`X`.`Refinal_Out`,`X`.`Packing_In`,`X`. `Warehouse_In` FROM(SELECT

我想每天早上8:00自动为多个收件人发送一封电子邮件,输出以下sql查询

$sql10 ="SELECT     `X`.`wdate`,`X`.`line`,`X`.`style_no`,`X`.`po_no`,`P`.`order_qty`,`X`.`Line_O    ut`,`X`.`Final_QC_Out`,`X`.`Iron_Out`,`X`.`Refinal_Out`,`X`.`Packing_In`,`X`.     `Warehouse_In`   FROM(SELECT     `Q`.`wdate`,`Q`.`line`,`Q`.`style_no`,`Q`.`po_no`,SUM(IF(`Q`.`place`='Line_Ou    t',`Q`.`bsum`,0)) AS Line_Out,      SUM(IF(`Q`.`place`='Final_QC_Out',`Q`.`bsum`,0)) AS     Final_QC_Out,SUM(IF(`Q`.`place`='Iron_Out',`Q`.`bsum`,0)) AS Iron_Out, SUM(IF(`Q`.`place`='Refinal_Out',`Q`.`bsum`,0)) AS Refinal_Out, SUM(IF(`Q`.`place`='Packing_In',`Q`.`bsum`,0)) AS Packing_In, SUM(IF(Q.place='Warehouse_In',Q.bsum,0)) AS Warehouse_In FROM(SELECT `T`.`fac_code` , T.style_no , T.po_no , SUM( T.bcount ) AS bsum , `T`.`wdate` , `T`.`Place`,`T`.`line` FROM ( SELECT `W`.`fac_code` , `W`.`barcode_id` , `B`.`style_no` , `B`.`po_no` , `B`.`size` , `B`.`colour` , COUNT( `W`.`barcode_id` ) as `bcount`,`W`.`wdate`,`W`.`place`,`W`.`line` FROM wherin_tbl AS W , barcode_tbl AS B WHERE `W`.`barcode_id` = `B`.`barcode_id` GROUP BY `W`.`barcode_id` ,`W`.`fac_code`,`W`.`place`,`W`.`line`,`W`.`wdate` ) AS T WHERE `T`.`fac_code`='$_POST[fac_code]' AND `T`.`wdate` BETWEEN '$_POST[frdate]' AND '$_POST[trdate]'  GROUP BY `T`.`line`,`T`.`place`,`T`.`po_no`,`T`.`wdate`) AS Q GROUP BY `Q`.`wdate`,`Q`.`po_no`,`Q`.`line` ) as X, po_tbl AS P WHERE `X`.`po_no`=`P`.`po_no` AND `P`.`fac_code`='$_POST[fac_code]' ORDER BY `X`.`wdate`,`X`.`line`";

我的剧本:

<?php
echo "<table border='1' cellpadding='3' cellspacing='0'> ";
echo "<tr> <th>Date</th><th>Line</th> <th>Style No</th> <th>PO No</th><th    bgcolor='#CCCCFF'>Order Qty</th><th>Line Out</th><th>Final QC Out</th><th>Iron Out</th><th>Refinal Out</th><th>Packing In</th><th>Warehouse In</th>";
while ($row10=mysql_fetch_array($result10)){
echo "<tr>";
echo "<td>" . $row10['wdate'] . "</td>";
echo "<td> Line" . $row10['line'] . "</td>";
echo "<td>" . $row10['style_no'] . "</td>";
echo "<td>" . $row10['po_no'] . "</td>";
echo "<td bgcolor='#CCCCFF'>" . $row10['order_qty'] . "</td>";
echo "<td>" . $row10['Line_Out'] . "</td>";
echo "<td>" . $row10['Final_QC_Out'] . "</td>";
echo "<td>" . $row10['Iron_Out']. "</td>";
echo "<td>" . $row10['Refinal_Out'] . "</td>";
echo "<td>" . $row10['Packing_In'] . "</td>";
echo "<td>" . $row10['Warehouse_In'] . "</td>";
echo "</tr>";
}

echo "</table>";

?>

这个脚本应该可以解决您当前的问题

第一个块构建$msg,它基于您提供的代码,因为我对您的数据库设置没有足够的了解,无法编写更现代的东西。mysql_fetch_数组和整组mysql_函数在PHP5.5.0中被弃用(请参阅等),不应再使用。但是,由于您以这种方式打开了数据库,因此我在第二个代码块中也使用了它。请考虑使用PDO类,这是一个巨大的改进,将使您的PHP/SQL更加稳定()
$msg=”“;
$msg.=“日期行样式无订单数量行外发品管外发熨斗外发品管内入库外发”;
而($row10=mysql\u fetch\u数组($result10)){
$msg.=”;
$msg.=''.$row10['wdate'].'';
$msg.=“行”。$row10['Line']。”;
$msg.=''.$row10['style_no'.];
$msg.=''.$row10['po_no'.];
$msg.=''.$row10['order\u qty'.];
$msg.=''.$row10['Line_Out']。'';
$msg.=“..row10['Final_QC_Out']”;
$msg.=“..row10['Iron_Out']”;
$msg.=“..row10['Refinal\u Out']”;
$msg.=''.row10['Packing_In'.];
$msg.=''.$row10['Warehouse_In'.];
$msg.=”;
}
$msg.=”;
$query=“从电子邮件中选择电子邮件\u tbl”;
if(!$result=mysql\u查询($query)){
$message='无效查询:'.mysql\u错误()。“\n”;
$message.=“整个查询:”。$query;
死亡($信息);
}
$to='';
while($row=mysql\u fetch\u assoc($result)){
$to.=$row['email'.',';
}
rtrim($至,“,”);
mysql_free_result($result);
$subject=“来自Gayan的早晨电子邮件”;
$headers='来自:webmaster@example.com' . “\r\n”。
答复:webmaster@example.com';
if(邮件($to、$subject、$msg、$headers)){
回显“电子邮件已成功发送
”; }否则{ 回显“发送电子邮件时出错
”; }
“请发送PHP代码给我”否。请停止发布“问候bla bla”等噪音。这无助于atall。警告:mail():“sendmail_from”未在PHP.ini中设置或自定义“from”:C:\AppServ\www\VOGUE\productionreport47.php第93行中缺少标题发送电子邮件时出错……。出现上述错误…………警告告诉您problem@GayanChaturanga我添加了一个$headers变量,这应该解决眼前的问题。您似乎在配置不正确的系统上运行,因为不需要$headers。您可能需要更新php.ini文件。您好……Ben Shoval/SparK@BenShovalthanx的支持。但问题仍然没有解决,因为现在它要求修改“PHP.ini”文件。仍在研究将exchange server设置为ini文件的方法。我觉得这个脚本正在运行。
 email_tbl
sn | email         |location |
1  |test@vtex.com  | HO      |
2  |test2@vtex.com |TGK      |
3  |test3@vtex.com |HO       |
$msg = "<table border='1' cellpadding='3' cellspacing='0'> ";
$msg .= "<tr> <th>Date</th><th>Line</th> <th>Style No</th> <th>PO No</th><th    bgcolor='#CCCCFF'>Order Qty</th><th>Line Out</th><th>Final QC Out</th><th>Iron Out</th><th>Refinal Out</th><th>Packing In</th><th>Warehouse In</th>";
while ( $row10 = mysql_fetch_array( $result10 ) ) {
  $msg .= "<tr>";
  $msg .= "<td>" . $row10['wdate'] . "</td>";
  $msg .= "<td> Line" . $row10['line'] . "</td>";
  $msg .= "<td>" . $row10['style_no'] . "</td>";
  $msg .= "<td>" . $row10['po_no'] . "</td>";
  $msg .= "<td bgcolor='#CCCCFF'>" . $row10['order_qty'] . "</td>";
  $msg .= "<td>" . $row10['Line_Out'] . "</td>";
  $msg .= "<td>" . $row10['Final_QC_Out'] . "</td>";
  $msg .= "<td>" . $row10['Iron_Out']. "</td>";
  $msg .= "<td>" . $row10['Refinal_Out'] . "</td>";
  $msg .= "<td>" . $row10['Packing_In'] . "</td>";
  $msg .= "<td>" . $row10['Warehouse_In'] . "</td>";
  $msg .= "</tr>";
}
$msg .= "</table>";

$query = "SELECT email FROM email_tbl";
if ( !$result = mysql_query( $query ) ) {
  $message  = 'Invalid query: ' . mysql_error() . "\n";
  $message .= 'Whole query: ' . $query;
  die($message);
}
$to = '';
while ( $row = mysql_fetch_assoc( $result ) ) {
  $to .= $row['email'] . ',';
}
rtrim( $to, "," );
mysql_free_result( $result );

$subject = "Morning email from Gayan";

$headers = 'From: webmaster@example.com' . "\r\n" .
   'Reply-To: webmaster@example.com';

if ( mail( $to, $subject, $msg, $headers ) ) {
  echo "Email sent successfully<br>";
} else {
  echo "ERROR sending email<br>";
}