PHP处理postfix邮件内容的方法
本文实例讲述了PHP处理postfix邮件内容的方法。分享给大家供大家参考。具体如下:
<?php //从输入读取到所有的邮件内容 $email=""; $fd=fopen("php://stdin","r"); while(!feof($fd)){ $email.=fread($fd,1024); } fclose($fd); //记录所有的内容,测试 file_put_contents("/tmp/mail/".time(),$email); //处理邮件 $lines=explode("\n",$email); //emptyvars $from=""; $date=""; $subject=""; $message=""; $splittingheaders=true; for($i=0;$i<count($lines);$i++){ if($splittingheaders){ //lookoutforspecialheaders if(preg_match("/^Subject:(.*)/",$lines[$i],$matches)){ $subject=$matches[1]; } if(preg_match("/^From:(.*)/",$lines[$i],$matches)){ if(strpos($lines[$i],"<")){ //thenameexisttooinfromheader $data=explode('<',$lines[$i]); $from=substr(trim($data[1]),0,-1); }else{ //onlythemail $from=$matches[1]; } } if(preg_match("/^Date:(.*)/",$lines[$i],$matches)){ $date=$matches[1]; } }else{ //notaheader,butmessage $message.=$lines[$i]."\n"; } if(trim($lines[$i])==""){ //emptyline,headersectionhasended $splittingheaders=false; } } $when=date("Y-m-dG:i:s"); $data=explode('@',$from); $username=$data[0]; //记录到数据库 $sql="insertintomails(`username`,`from`,`subject`,`date`,`message`)values('$username','$from','$subject','$when','$message')"; //测试 file_put_contents("/tmp/mail2.log",$sql); ?>
希望本文所述对大家的php程序设计有所帮助。