Как отправить результаты запроса php mysql по электронной почте в цикле while? - PullRequest
1 голос
/ 05 августа 2011

Я создал файл с именем 'userhistoryreport.php'.Он будет настроен на запуск один раз в день.Цель этого файла - собрать контактную информацию и историю для пользователей, которые взаимодействовали с сайтом в этот конкретный день.Сценарий работает, но я не уверен в , как получить результаты для отправки на электронную почту .Электронное письмо должно быть отформатировано так же, как страница в браузере - где каждый пользователь указан в своей истории.Любая помощь приветствуется.

echo '<div style="padding: 0 20px;">';
echo '<span style="display: block; font-size: 22px; font-weight: bold; margin: 25px 0 -15px 0;"> User Activity on' . $website . 'for' . $date . '</span>';


//query the database for today's history
$result = mysql_query("SELECT * FROM user_history WHERE date = '$date' ORDER by name, time, title") 
or die(mysql_error());
$old_user = '';   

    while($row = mysql_fetch_array( $result )) {
        $new_user = $row['uid'];
        if ($new_user != $old_user) {
            echo '<br /><br /><hr />' . '<span style="font-size: 18px; font-weight: bold;">' . $row['name'] . '</span>' . '<br />' . $row['company'] . '<br />' . $row['email'] . '<br />' . $row['phone'] . '<br /><br />'; 
            $old_user = $new_user;
        }
        echo '<ul><li>' . $row['time'] .
        '<ul><li>' . $row['title'] . ' (<a href="' . $row['url'] . '">' . $row['url'] . '</a> )' . '</li></ul>' . '<br /><br />' .
        '</li></ul>';
    }  
echo '</div>';

echo 
'<div style="position: fixed; bottom: 0; height: 40px; width: 100%; margin: 20px 0 0 0; background: #000; color: #FFF; line-height: 40px;">' .
'Report generated ' . $date . ' ' . $time .
'</div>';

Ответы [ 2 ]

2 голосов
/ 05 августа 2011

Прямо из функции mail () в руководстве по php, попробуйте это;

Поместите весь ваш html в строку, вместо того, чтобы немедленно выводить его, заменив все ваши эхо начто-то вроде этого;

$message .= '<br /><br /><hr />' . '<span style="font-size: 18px; font-weight: bold;">' . $row['name'] . '</span>' . '<br />' . $row['company'] . '<br />' . $row['email'] . '<br />' . $row['phone'] . '<br /><br />';           
$message .= '<ul><li>' . $row['time'] .
    '<ul><li>' . $row['title'] . ' (<a href="' . $row['url'] . '">' . $row['url'].     '</a> )' . '</li></ul>' . '<br /><br />' .
    '</li></ul>';

Чтобы отобразить отчет, используйте

echo $message;

Чтобы отправить отчет по почте, поставьте этот бит после заключительного закрывающего тега, чтобы отправить отчет с 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('your@emailadress.com', 'Report generated ' . $date . ' ' . $time, $message, $headers);
0 голосов
/ 09 марта 2012

Для вас, программистов, полезный совет для вышеизложенного - динамически генерировать заголовки таблиц на основе набора результатов.

$fieldArray = array_keys( mysql_fetch_array( mysql_query( $sQuery, $link), MYSQL_ASSOC)); 

//Build Table Headers
$report.= '<table><tr>';

//Spit out result column names
for ($i=0;$i<count($fieldArray);$i++) {
   $report.= '<th><strong>'.$fieldArray[$i].'</strong></th>';
}

//close row
$report.= '<\tr>';

Тогда в своем запросе вы можете использовать колонку AS "Имя" синтаксис и вуаля! :)

Бесстыдный плагин, но я написал коммерческий PHP-скрипт для создания html-писем на основе запросов mySQL здесь -> http://www.julian -young.com / mysqlreporter / с html-почтой, несколькими цветовыми схемами, и он очень гибкий для автоматического создания нескольких отчетов из запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...