Я отправляю динамически создание html-таблицы в тело электронной почты, но в письме я получаю код html вместо отображения таблицы. Пожалуйста, помогите мне. Вот мой код.
<?php $output = '<html><body><form>'; $output .= '<table border="1"><tr><th>Author</th><th>Node Title</th><th>Node Summary</th><th>Node Body</th><th>Edit this node</th><th>Report Abuse</th><th>Group</th></tr>'; while($row = mysql_fetch_array($sql)) { $data = explode('"', $query['data']); $output .= '<tr><td>'; if($row['created'] >= $strdate && $row['created'] < $enddate) { $output .= '<a href="http://localhost/localstage/user/' . $row['uid'] . '">' . $query['name'] . '</a></td><td>'; $output .= '<a href="http://localhost/localstage/node/' . $row['nid'] . '">' . $row['title'] . '</a> (New)</td><td>'; } else { $output .= '<a href="http://localhost/localstage/user/' . $sql_query['uid'] . '">' . $query['name'] . '</a></td><td>'; $output .= '<a href="http://localhost/localstage/node/' . $row['nid'] . '">' . $row['title'] . '</a> (Updated)</td><td>'; } //$output .= '</td><td>'; $output .= $row['teaser'] . '</td><td>'; if($row['field_provcomp_level_value'] == 0 || $row['field_provcomp_level_value'] == 1)<br /> { $output .= $row['body'] . '</td><td>'; } else { $output .= '</td><td>'; } $output .= '<a href="http://localhost/localstage/abuse/report/node/' . $row['nid'] . '">Abuse</a></td><td>'; $output .= '<a href="http://localhost/localstage/node/' . $row['nid'] . '/edit">Edit</a></td><td>'; $query = mysql_fetch_array(mysql_query("SELECT title from node Where type = 'groupnode' AND nid = '" . $row['nid'] . "'")); $output .= $query['title'] . '</td></tr>'; } $output .= '</table></form></body></html>'; print $output; $to = 'hmdnawaz@gmail.com'; $headers = "From Ahmad \r\n"; //$headers .= "Reply-To: ". strip_tags($_POST['req-email']) . "\r\n"; //$headers .= "CC: susan@example.com\r\n"; $headers .= 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-Type: text/html; charset=ISO-8859-1' . "\r\n"; $subject = 'Email report'; mail($to, $subject, $output, $headers); if(mail) { echo 'Email sent'; } else { echo 'Error sending email'; } ?>
Сначала вам не хватает тега в коде HTML, но это не должно быть проблемой.
Во-вторых, ваш заголовок неверен, у вас есть:
$headers = "From Ahmad \r\n"; //$headers .= "Reply-To: ". strip_tags($_POST['req-email']) . "\r\n"; //$headers .= "CC: susan@example.com\r\n"; $headers .= 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-Type: text/html; charset=ISO-8859-1' . "\r\n"; $subject = 'Email report';
вместо:
//$headers .= "Reply-To: ". strip_tags($_POST['req-email']) . "\r\n"; //$headers .= "CC: susan@example.com\r\n"; $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-Type: text/html; charset=ISO-8859-1' . "\r\n"; $headers .= "From: Ahmad <email@email.com>\r\n"; $subject = 'Email report';
В принципе, я думаю, что заголовок должен начинаться с «Mime-Version».
Проверьте этот код: http://us.php.net/manual/en/function.mail.php#example-2877
Прежде всего, я бы предложил использовать расширение Pear Mail (он поставляется с базовой сборкой php), потому что использование функции imo () не так хорошо, используя класс грубой почты, вы также можете установить тип mime без труда.
Класс Mail_mime
Пожалуйста, имейте в виду, что многие почтовые службы имеют ограниченную (если есть) поддержку HTML-сообщений, однако я не знаю уровень поддержки для таблиц.
http://php.net/manual/en/function.mail.php
Официальный пример для отправки HTML-сообщений:
<?php // multiple recipients $to = 'aidan@example.com' . ', '; // note the comma $to .= 'wez@example.com'; // subject $subject = 'Birthday Reminders for August'; // message $message = ' <html> <head> <title>Birthday Reminders for August</title> </head> <body> <p>Here are the birthdays upcoming in August!</p> <table> <tr> <th>Person</th><th>Day</th><th>Month</th><th>Year</th> </tr> <tr> <td>Joe</td><td>3rd</td><td>August</td><td>1970</td> </tr> <tr> <td>Sally</td><td>17th</td><td>August</td><td>1973</td> </tr> </table> </body> </html> '; // To send HTML mail, the Content-type header must be set $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; // Additional headers $headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n"; $headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n"; $headers .= 'Cc: birthdayarchive@example.com' . "\r\n"; $headers .= 'Bcc: birthdaycheck@example.com' . "\r\n"; // Mail it mail($to, $subject, $message, $headers); ?>
В конце концов, одна проблема может заключаться в том, что созданное вами дерево таблиц имеет некоторые проблемы с отображением в определенных почтовых клиентах. Можете ли вы проверить код выше?
Я бы предложил Swiftmailer
Он используется проектом Symfony и имеет отличные документы и поддержку.
Написание функций электронной почты самостоятельно не рекомендуется, так как существует множество причуд и соображений безопасности.
Вот документ для установки содержимого тела html: