I am using Sendmail for my PHP Project. The email sent successfully but it will sent one by one. The flow of my coding is it going to check the database, then if the value of the item is less than what I set, it will send email to notify user.
I would like to combine all the item into one single email, so that user did not receive too many email for the same notification. I hope you get what I mean. The thing is, I dont know how to combine the data into one single email using Sendmail. Can someone show where should I change to do it ?
This is my code :
<?php
include 'MasConnectDB.php';
$sql = "SELECT Item, Available FROM accessories_other";
$result = mysql_query( $sql ) or die( 'Query failed.'.mysql_error() );
while($row = mysql_fetch_array($result))
{
$Item = $row['Item'];
$Available = $row['Available'];
if( $row['Available'] <= 5 ){
$message2 = $message3." <div style='margin:30px 0px;'>
$Item<br /></div>";
}
$to = 'some@email.com';
$subject = 'Testing sendmail.exe';
$message = 'The Following Your Product Expired. Product Code:'.$message2;
$headers = 'From: some@email.com' . "\r\n" .
'Reply-To: some@email.com' . "\r\n" .
'MIME-Version: 1.0' . "\r\n" .
'Content-type: text/html; charset=iso-8859-1' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
if(mail($to, $subject, $message, $headers))
echo "Email sent";
else
echo "Email sending failed";
}
?>
EDITED :
<?php
include 'MasConnectDB.php';
$sql ="SELECT TC_Status FROM thin_client WHERE TC_Status ='Available'";
$result = mysql_query($sql) or die('Query failed. ' . mysql_error());
while($row = mysql_fetch_array($result)) {
$TC_STatus = $row['TC_Status'];
if( $result > 5 ){
echo "Thin client is more than 5";
}
else
$to = 'some@email.com';
$subject = 'Notification of less on stock';
$message = 'less than 5';
$headers = 'From: some@email.com' . "\r\n" .
'MIME-Version: 1.0' . "\r\n" .
'Content-type: text/html; charset=iso-8859-1' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
if(mail($to, $subject, $message, $headers))
echo "Email sent";
else
echo "Email sending failed";
}
?>
You are looping the mail()
function within the While Loop. By adjusting the codes like below, you can send in 1 email. (Of course you can fine tune the contents)
$to = 'some@email.com';
$subject = 'Testing sendmail.exe';
$message = '';
$headers = 'From: some@email.com' . "\r\n" .
'Reply-To: some@email.com' . "\r\n" .
'MIME-Version: 1.0' . "\r\n" .
'Content-type: text/html; charset=iso-8859-1' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
while($row = mysql_fetch_array($result)) {
if( $row['Available'] <= 5 ){
$Item = $row['Item'];
$message .= "<div style='margin:30px 0;'>$Item<br /></div>";
}
}
if(mail($to, $subject, $message, $headers))
echo "Email sent";
else
echo "Email sending failed";
Sidenotes:
0
has no unitmysql_*
functions.exe
is usually treated as spam in email servers