从 cron 发送电子邮件,格式为 html,而不是文本

从 cron 发送电子邮件,格式为 html,而不是文本

我正在尝试email每隔 1 小时发送cron一次作业,该作业正在执行一个php脚本,该脚本从数据库获取数据并以表格格式显示。

我已经CentOs 6.1创建了我的 cron 作业。首先,我cronie从终端安装yum install cronie。然后我输入crontab -e并打开 VI 编辑器

我将我的 cron 与 MAILTO 放在一起,例如

MAILTO="[email protected]"
10 * * * * php /var/www/html/myfile.php

它每 10 分钟发送一次电子邮件,但发送的电子邮件内容是我不想要的文本。

myfile.php

<?php 
$con=mysql_connect("localhost","root","");
mysql_select_db("dbname",$con);
$to="[email protected]"
$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 格式。

我正在尝试获取表格格式的电子邮件,就像从浏览器获取的一样,但我获取的是文本格式。

是否可以从 cron 获取 html 格式的电子邮件

任何其他可能性都是受欢迎的。我尝试了谷歌所能找到的所有如果和但是,但我找不到解决方法。

答案1

根据未接受的答案类似问题这取决于您正在运行哪个版本的 cron。

检查man 5 crontab是否支持设置 CONTENT_TYPE 和/或 CONTENT_TRANSFER_ENCODING 变量来更改默认纯文本。

据我所知,在 RHEL 6 上的 cronie 中是这样的,并且如果脚本的输出是 HTML 格式的,则以下内容应该在您的 crontab 中起作用:

MAILTO="[email protected]"
CONTENT_TYPE="text/html; charset=iso-8859-1"
10 * * * * php /var/www/html/myfile.php

答案2

我使用 mutt 将 cron 输出以 HTML 格式发送

... <cron command> | mutt -e 'set content_type=text/html' -s "Subject" [email protected] -b [email protected]

相关内容