查看: 919|回复: 5
|
PHP scheduler 问题-send 不完整
[复制链接]
|
|
我是用php的,我设定了scheduler,在特定时间会run一个php file,那个file会从database拿content然后send mail,问题是send出的content不完整,会不会是content太长的关系?因为那些content确实很长,可以是一个完整的网页,但是当我manually开browser,直接打那个file,让它从database拿content然后send mail就没有问题,各位知道什么事吗? |
|
|
|
|
|
|
|
发表于 15-2-2007 10:56 PM
|
显示全部楼层
怎么样不完整? 有没有 sample?
我猜想是, 你的 content 才长却没放 line break.
尝试一下在一些 paragraph 放 "\n":
$content .= "xxxxxxxxxxxx \n";
如果没有 "\n", content 就会自动分行... 你的 html tag 可能会就断开.
当然, 如果还是不行... 就要把你的 code 放出来. |
|
|
|
|
|
|
|

楼主 |
发表于 16-2-2007 11:23 AM
|
显示全部楼层
我的system会call scheduler,是一个 .bat program,它的code只是 start /min c:\php\php.exe c:\Apache\htdocs\company\content\cron.php,然后这个bat会run cron.php file,寄出newsletter
以下是code cron.php
<?
check_cron_job($link,$HOMEDIR);
function check_cron_job($cn,$HOMEDIR){
$sql = "select n_id,recipient,send_date,send_time, timesent,id,supplier_code,name from newsletter_history where send_flag='n' ";
$stmt = odbc_exec($cn, $sql);
$date=time();
$time =date("H:i");
$current_time_temp_arr=explode(":",$time);
$current_time_arr=$current_time_temp_arr[0];
while($row=odbc_fetch_array($stmt))
{
$send_date=odbc_result($stmt,3);
$nid=odbc_result($stmt,1);
$receipient=odbc_result($stmt,2);
$name=odbc_result($stmt,8);
$timesent=odbc_result($stmt,5);
$id=odbc_result($stmt,6);
$send_time=odbc_result($stmt,4);
$supplier_code=odbc_result($stmt,7);
$time_temp_arr=explode(":",$send_time);
$db_time_arr=$time_temp_arr[0];
if($date>=$send_date && $db_time_arr<=$current_time_arr){
retrieve_mail($send_date,$send_time,$id,$nid,$receipient,$name,$timesent,$cn,$send_time,$supplier_code,$HOMEDIR);//sent_mail($sendname,$sendmail,$returnmail,$sentto,$sentmail,$subject,$msg,$cn)
}
}
}
function retrieve_mail($send_date,$send_time,$id,$nid,$receipient,$name,$timesent,$cn,$send_time,$supplier_code,$HOMEDIR){
$sqlDomain="select domain_name from company_systemsetting`where supplier_code='$supplier_code'";
$stmtDomain=odbc_exec($cn, $sqlDomain);
$row=odbc_fetch_array($stmtDomain);
$domain=$row[domain_name];
if(trim($domain)=="")
$domain_link="www.company.com.my";
else
$domain_link=$domain;
$date_send=date("d/m/Y",$send_date);
$sql = "select subject,message,sender_name,sender_mail,return_mail,id from newsletter_info where id=$nid";
$stmt = odbc_exec($cn, $sql);
$info="";
while(odbc_fetch_row($stmt)){
$info[subject] =odbc_result($stmt,1);
$message_db = HTMLdeconvert(odbc_result($stmt,2));
$info[message] =$message_db;
$info[sender_name] =odbc_result($stmt,3);
$info[sender_mail] =odbc_result($stmt,4);
$info[return_mail] =odbc_result($stmt,5);
$info[id] =odbc_result($stmt,6);
}
$link2="[url=http://$domain_link/$supplier_code/catalog/newsletter/$info[id].html]http://$domain_link/$supplier_code/catalog/newsletter/$info[id].html[/url]";
$message="<p align='center'>If you are unable to view the contents below, visit<br><a href='$link2' target='_blank'>$link2</a></p><br>";
$link = "http://".$_SERVER["SERVER_NAME"]."/$coname/content/newsletter/unsubscribenow.html?email=".$receipient."&supplier_code=$supplier_code";
$message.= $info[message]."<br>Click <a href=$link target=new>here</a> to unsubscribe from our newsletter";
if(sendNewsletterMail($receipient,$name,$info[subject],$message,$info[sender_mail] ,$info[sender_name],""))
{
$msg = "Newsletter sent on $date_send $send_time No of time try = $timesent, ID=$id, Flag = y \r\n";
update_hstatus($id,"y",$timesent,$cn);
}
else{
$msg = "Newsletter sent on $date_send $send_time No of time try= $timesent, ID=$id, Flag = n \r\n";
update_hstatus($id,"n",$timesent,$cn);
}
$logpath = "$HOMEDIR/MassLog";
$logfile =$logpath."/$supplier_code.log";
mkdirs($logpath);
$handle = fopen($logfile,"a+");
fwrite($handle,$msg);
}
?>
在 retrieve_mail function 里,才会从db拿content 寄出,但是会不完整,但是假如在browser 直接access cron.php这个file,寄出去的就没有问题,用scheduler来call cron.php 的话就有问题 |
|
|
|
|
|
|
|
发表于 16-2-2007 02:21 PM
|
显示全部楼层
你的 check_cron_job 的 function 里好象没有拿 message
这是你的 check_cron_job
$receipient=odbc_result($stmt,2);
这是你的 retrieve_mail
$message_db = HTMLdeconvert(odbc_result($stmt,2));
$info[message] =$message_db;
怎么两个完全不同的? |
|
|
|
|
|
|
|
发表于 23-2-2007 09:37 AM
|
显示全部楼层
请问如何用php set scheduler?
谢谢 |
|
|
|
|
|
|
|

楼主 |
发表于 21-3-2007 10:15 AM
|
显示全部楼层
原帖由 goatstudio 于 16-2-2007 14:21 发表
你的 check_cron_job 的 function 里好象没有拿 message
这是你的 check_cron_job
$receipient=odbc_result($stmt,2);
这是你的 retrieve_mail
$message_db = HTMLdeconvert(odbc_result($st ...
对的。。。我的recipient从一个table拿,然后call retrieve_mail function拿message才send出去 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|