cyberwar Posted September 17, 2011 Share Posted September 17, 2011 Hallo There, I have some code I got from the internet a while ago. The code works as follow: 1.) The script runs from the command prompt (Linux) with a contab service 2.) It executes a specified SQL query against a MySQL database server 3.) Formats the output of the result set into an html table 4.) Sends the result to an email address I am not a programmer :-( I have been using the code with great success for some time, but it has the following bug: On certain email clients it displays as text and not as an html email. Especially on mac operated systems and iPhones/iPADs etc. Any assistance would be greatly appreciated. Thanks in advance CW <code starts> <?php //define the receiver of the email $to = '[email protected]'; //define the subject of the email $subject = 'My Subject'; //create a boundary string. It must be unique //so we use the MD5 algorithm to generate a random hash $random_hash = md5(date('r', time())); //define the headers we want passed. Note that they are separated with \r\n $headers = "From: [email protected]\r\nReply-To: [email protected]"; //add boundary string and mime type specification $headers .= "\r\nContent-Type: multipart/alternative; boundary=\"PHP-alt-".$random_hash."\""; //define the body of the message. ob_start(); //Turn on output buffering ?> --PHP-alt-<?php echo $random_hash; ?> Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: 7bit <h2>Some text for heading...</h2> <?php //Call the function like this: echo SQLResultTable("SELECT * from table_name;"); function SQLResultTable($Query) { //mysql user variables $HOST = "localhost"; $USER = "mysqluser"; $PASS = "password"; $DB = "database"; $link = mysql_connect($HOST, $USER, $PASS) or die('Could not connect: ' . mysql_error()); //build MySQL Link mysql_select_db($DB) or die('Could not select database'); //select database $Table = ""; //initialize table variable $Table.= "<table border='1' style=\"border-collapse: collapse;\">"; //Open HTML Table $Result = mysql_query($Query); //Execute the query if(mysql_error()) { $Table.= "<tr><td>MySQL ERROR: " . mysql_error() . "</td></tr>"; } else { //Header Row with Field Names $NumFields = mysql_num_fields($Result); $Table.= "<tr style=\"background-color: #000066; color: #FFFFFF;\">"; for ($i=0; $i < $NumFields; $i++) { $Table.= "<th>" . mysql_field_name($Result, $i) . "</th>"; } $Table.= "</tr>"; //Loop thru results $RowCt = 0; //Row Counter while($Row = mysql_fetch_assoc($Result)) { //Alternate colors for rows if($RowCt++ % 2 == 0) $Style = "background-color: #00CCCC;"; else $Style = "background-color: #0099CC;"; $Table.= "<tr style=\"$Style\">"; //Loop thru each field foreach($Row as $field => $value) { $Table.= "<td>$value</td>"; } $Table.= "</tr>"; } $Table.= "<tr style=\"background-color: #000066; color: #FFFFFF;\"><td colspan='$NumFields'>Query Returned " . mysql_num_rows($Result) . " records</td></tr>"; } $Table.= "</table>"; return $Table; } ?> <h2>Disclaimer</h2> <p> Some text ... This is my Discaimer (footer)... </p> --PHP-alt-<?php echo $random_hash; ?>-- <? //copy current buffer contents into $message variable and delete current output buffer $message = ob_get_clean(); //send the email $mail_sent = @mail( $to, $subject, $message, $headers ); //if the message is sent successfully print "Mail sent". Otherwise print "Mail failed" echo $mail_sent ? "Mail sent" : "Mail failed"; ?> </code ends> Link to comment https://forums.phpfreaks.com/topic/247326-re-sending-sql-query-to-email-in-html-small-bug-please-help/ Share on other sites More sharing options...
cyberwar Posted September 20, 2011 Author Share Posted September 20, 2011 Is there anyone who can assist please? I really need to resolve the problem and would appreciate any assistance. Thanks in advance CW Link to comment https://forums.phpfreaks.com/topic/247326-re-sending-sql-query-to-email-in-html-small-bug-please-help/#findComment-1270894 Share on other sites More sharing options...
voip03 Posted September 20, 2011 Share Posted September 20, 2011 1. This is probably a bug/misconfiguration on the exchange server or in the iPhone Exchange synchronisation 2. Check the mail set up on iPhone 3. If you have Gmail account – use safari or Google check email 4. Use Swift Mailer it will work. Link to comment https://forums.phpfreaks.com/topic/247326-re-sending-sql-query-to-email-in-html-small-bug-please-help/#findComment-1271171 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.