Назад | Перейти на главную страницу

отправка электронной почты из cron в формате html, а не в тексте

я пытаюсь отправить email каждые 1 час с cron задание, которое выполняет php сценарий, который извлекает данные из базы данных и отображает их в виде таблицы.

у меня есть CentOs 6.1 где я создал свою работу cron. сначала я установил cronie с терминала yum install cronie. затем я набираю crontab -e и открывает редактор VI

там я поставил свой cron с MAILTO вроде

MAILTO="someemail@ex.com"
10 * * * * php /var/www/html/myfile.php

он отправляет электронное письмо каждые 1 час после 10 минут, но отправляет электронное письмо в текстовом формате, который мне не нужен.

myfile.php

<?php 
$con=mysql_connect("localhost","root","");
mysql_select_db("dbname",$con);
$to="some@example.com"
$subject = 'Count User Login And Application';

//fetch between 06:00:00 to 08:30:00   09:00:00 to 10:00:00
$date=array('06:00:00','09:00:00');
$date1=array('08:30:00','10:00:00');

$msg  = '<html><head>';
$msg .='<title>Some Title</title>';
$msg .='</head>';
$msg .='<h1>Test User</h1>';
$msg .='<table border="1" cellspacing="1">';

$msg .=  "<tr>";
$msg .=  "<th>start time</th>";
$msg .=  "<th>end time</th>";
$msg .=  "<th>Count</th>";

$count=count($date);
for($i=0;$i<$count;$i++){

$sql="SELECT count(*) AS test FROM table_name WHERE DATE_FORMAT(sys_time,'%H:%m:%i') BETWEEN DATE_FORMAT(sys_time,'$date[$i]') AND  DATE_FORMAT(sys_time,'$date1[$i]') ";
$query=mysql_query($sql);

if(!$query){
die('could not connect'.mysql_error());}


while($row=mysql_fetch_array($query)) {

$msg .=  "<tr>";
$str=$row['test'];
$subcategory = explode(',', $str);
foreach($subcategory as $value) 
{
    $msg .=  "<td>" . $value . "</td>";
 }
$msg .=  "</tr>";
  } 
}
$msg .=  "</table>";      
$msg .=  "</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";
mail($to, $subject, $msg);
?> 

поскольку я использую простой mail() в php с headers сделать это в html но мой cron отправляет почту в текстовом формате, а не в формате html.

Я пытаюсь получить электронную почту в формате таблицы, как в браузере, но получаю в текстовом формате.

можно ли получить электронную почту в формате html из cron

любые другие возможности всегда приветствуются. Я пробовал все «если» и «но», которые я могу получить от Google, но я не могу найти способ с этим работать.

Согласно непринятым ответам на аналогичный вопрос это зависит от того, какую версию cron вы используете.

Проверьте man 5 crontab если установка переменных CONTENT_TYPE и / или CONTENT_TRANSFER_ENCODING поддерживается для изменения от обычного текста по умолчанию.

AFAIK в cronie на RHEL 6 это так, и если вывод скрипта имеет формат HTML, в вашем crontab должно работать следующее:

MAILTO="someemail@example.com"
CONTENT_TYPE="text/html; charset=iso-8859-1"
10 * * * * php /var/www/html/myfile.php

Я использую mutt для отправки вывода cron в виде HTML

... <cron command> | mutt -e 'set content_type=text/html' -s "Subject" user@example.com -b admin@example.com