我试图发送email
每1小时从cron
作业正在执行一个php
脚本,从数据库中提取数据,并以表格格式显示。
我有CentOs 6.1
在哪里我创build了我的cron作业。首先我从terminalyum install cronie
我键入crontab -e
并打开VI编辑器
在那里我把我的cron与MAILTO一样
MAILTO="[email protected]" 10 * * * * php /var/www/html/myfile.php
它发送电子邮件每1小时过去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); ?>
因为我在PHP中使用简单的mail()
headers
来呈现它在html
但我的cron
发送邮件的文本格式,而不是HTML格式。
我正在尝试以表格格式获得电子邮件,就像从浏览器进入,但我正在获取文本格式。
是否有可能从cron获得HTML格式的电子邮件
任何其他的可能性总是welcome.i已经尝试过每一个如果是,但我可以从谷歌,但我找不到一个方法来工作。
根据类似问题的不被接受的答案,它取决于你正在运行哪个版本的cron。
如果支持将CONTENT_TYPE和/或CONTENT_TRANSFER_ENCODINGvariables设置为默认纯文本,则选中man 5 crontab
。
在RHEL 6 cronie的AFAIK是这样的,如果脚本的输出是HTML格式的,你应该在你的crontab中工作:
MAILTO="[email protected]" CONTENT_TYPE="text/html; charset=iso-8859-1" 10 * * * * php /var/www/html/myfile.php