data ['rootUrl'] = Doo::conf ()->APP_URL; Load::logic ( 'Email' ); $this->email_task = new EmailLogic (); } /** * 进入邮件管理 */ public function manage_Email() { if (empty($_SESSION['main'])) { return Doo::conf()->APP_URL . 'm'; } // $url='http://sendcloud.sohu.com/webapi/list.create.json?api_user=postmaster@zhzd.sendcloud.org&api_key=cDO1GjtY1seH&address=sso@maillist.sendcloud.org&name=sso'; // $result = file_get_contents($url); // $rs=json_decode($result,true); Doo::loadModel ( 'users' ); $Users = new Users(); $count=$Users->count(array('asArray'=>true)); $url='http://sendcloud.sohu.com/webapi/list.get.json?api_user=postmaster@zhzd.sendcloud.org&api_key=cDO1GjtY1seH&address=sso@maillist.sendcloud.org'; $result = file_get_contents($url); $rs=json_decode($result,true); // print_r($rs); // die(); $this->data['count2']=0; if (!empty($rs['count'])) $this->data['count2']=$rs['lists'][0]['members_count']; $this->data['count1']=$count; $d=date("Y-m-d"); $url='http://sendcloud.sohu.com/webapi/stats.get.json?api_user=postmaster@zhzd.sendcloud.org&api_key=cDO1GjtY1seH&start_date='.$d.'&end_date='.$d; $result = file_get_contents($url); $rs=json_decode($result,true); $this->data['count']=50000-$rs['stats'][0]['request']; $this->data['selectemail'] = true; $this->render ( 'admin/mailListCreate', $this->data, TRUE ); } function sendUP(){ /* $url='http://sendcloud.sohu.com/webapi/list.delete.json?api_user=postmaster@zhzd.sendcloud.org&api_key=cDO1GjtY1seH&address=sso@maillist.sendcloud.org'; $result = file_get_contents($url); die; */ $url='http://sendcloud.sohu.com/webapi/list.get.json?api_user=postmaster@zhzd.sendcloud.org&api_key=cDO1GjtY1seH&address=sso@maillist.sendcloud.org'; $result = file_get_contents($url); $rs=json_decode($result,true); if (empty($rs['count'])){ $url='http://sendcloud.sohu.com/webapi/list.create.json?api_user=postmaster@zhzd.sendcloud.org&api_key=cDO1GjtY1seH&address=sso@maillist.sendcloud.org&name=sso'; $result = file_get_contents($url); $rs=json_decode($result,true); } $Path = "./global/sso.json"; //不存在文件创建 if(!file_exists($Path)){ file_put_contents($Path,0); } $id=file_get_contents($Path); Doo::loadModel ( 'users' ); $Users = new Users(); $start=$id; //$end=$id+1500; $end=500; $userList=$Users->find(array('limit'=>$start.','.$end,'asArray'=>true)); /* foreach ($userList as $key=>$value){ $userList[$key]['useremail']='cpthought@vip.qq.com'; } //print_r($userList); //die; */ $ul=array();$i=0;$pa=array(); foreach ($userList as $key=>$value){ array_push($pa, $value['useremail']); $falg=true; if ($i==99){ array_push($ul, $pa); $i=0;$pa=array(); $falg=false; } if ($falg) $i++; } $url = 'http://sendcloud.sohu.com/webapi/list_member.add.json'; foreach ($ul as $value){ $userT=implode(';', $value); $param = array('api_user' => 'postmaster@zhzd.sendcloud.org', 'api_key' => 'cDO1GjtY1seH', 'mail_list_addr'=>'sso@maillist.sendcloud.org', 'upsert' =>'true', 'member_addr' => $userT ); $post_data = http_build_query($param); $ch = curl_init(); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_HEADER, false); //设定是否输出页面内容 curl_setopt($ch, CURLOPT_NOBODY, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); $result =curl_exec($ch); curl_close($ch); $rs=json_decode($result,true); if ($rs['message']=='success'){ $id=file_get_contents($Path); file_put_contents($Path,$id+100); } } return '/m/email'; } public function createEmail(){ if (empty($_SESSION['main'])) { return Doo::conf()->APP_URL . 'm'; } $title = $this->get_args ( "title" ); //$content = $_POST[ "content" ]; $stype = $this->get_args ( "stype" ); if(!empty($title)&&$stype==1){ Doo::loadModel ( 'users' ); $Users = new Users(); Doo::loadModel('/m/emailList'); $emailList = new emailList(); // $list=$Users->find(array('select'=>'useremail','asArray'=>true)); // $size=floor(count($list)/5); // // $list=array_chunk($list,$size); // $emailJson=array(); // foreach ($list as $value){ // $em=array(); // foreach ($value as $v){ // array_push($em, $v['useremail']); // } // array_push($emailJson, $em); // } $emailList->title=$title; //$emailList->content=$content; // $emailList->Email1=json_encode($emailJson[0]); // $emailList->Email2=json_encode($emailJson[1]); // $emailList->Email3=json_encode($emailJson[2]); // $emailList->Email4=json_encode($emailJson[3]); // $emailList->Email5=json_encode($emailJson[4]); $emailList->time=date("Y-m-d"); $emailList->insert(); return '/m/mailList'; }elseif(!empty($title)&&$stype==2){ /* $url='https://sendcloud.sohu.com/webapi/list_member.delete.xml?api_user=postmaster@zhzd.sendcloud.org&api_key=cDO1GjtY1seH&mail_list_addr=websoft1@zhzd.sendcloud.org'; $result = @file_get_contents($url, false); $url='https://sendcloud.sohu.com/webapi/list_member.delete.xml?api_user=postmaster@zhzd.sendcloud.org&api_key=cDO1GjtY1seH&mail_list_addr=websoft2@zhzd.sendcloud.org'; $result = @file_get_contents($url, false); $url='https://sendcloud.sohu.com/webapi/list_member.delete.xml?api_user=postmaster@zhzd.sendcloud.org&api_key=cDO1GjtY1seH&mail_list_addr=websoft3@zhzd.sendcloud.org'; $result = @file_get_contents($url, false); //print_r($list); $sitePath=Doo::conf()->SITE_PATH.'protected/class/'; $s1=file_get_contents($sitePath."20000.php", false); $s2=file_get_contents($sitePath."40000.php", false); $s3=file_get_contents($sitePath."60000.php", false); */ Doo::loadModel('/m/emailList'); $emailList = new emailList(); $emailList->title=$title; //$emailList->content=$content; $emailList->stype=2; //$emailList->Email1=$s1; //$emailList->Email2=$s2; //$emailList->Email3=$s3; $emailList->time=date("Y-m-d"); $emailList->insert(); /* https://sendcloud.sohu.com/webapi/list_member.add.xml?api_user=username&api_key=password&mail_list_addr=developers@sendcloud.org &member_addr=john@sendcloud.org;to2@126.com&name=约翰;林肯&vars={"money": "1000"};{"money": "200"}&upsert=true */ return '/m/mailList'; } return '/m/email'; } /* * 生成用户 * $sitePath=Doo::conf()->SITE_PATH.'protected/controller/m/'; $user=file_get_contents($sitePath."60000.txt", false); //readfile(); $user=str_replace("\r\n",",",$user); $userList=explode(',',$user); $list=array(); foreach ($userList as $value){ $s=strpos($value,'<'); $e=strpos($value,'>'); $value=substr($value,$s); $value=substr($value,0,$e); $value=str_replace("<","",$value); $value=str_replace(">","",$value); array_push($list, $value); } $userList=json_encode($list); file_put_contents("60000.php", $userList); */ function viewMail(){ if (empty($_SESSION['main'])) { return Doo::conf()->APP_URL . 'm'; } $eid = $this->params[ "eid" ]; Doo::loadModel('/m/emailList'); $emailList = new emailList(); $eMailList=$emailList->getOne(array('where'=>'eid ='.$eid,'asArray'=>true)); $this->data['eMailList']=$eMailList; $this->data['selectemail'] = true; $this->render ( 'admin/mailListView', $this->data, TRUE ); } function mailList(){ if (empty($_SESSION['main'])) { return Doo::conf()->APP_URL . 'm'; } Doo::loadModel('/m/emailList'); $emailList = new emailList(); $list=$emailList->find(array('desc'=>'eid','asArray'=>true)); $d=date("Y-m-d"); $url='http://sendcloud.sohu.com/webapi/stats.get.json?api_user=postmaster@zhzd.sendcloud.org&api_key=cDO1GjtY1seH&start_date='.$d.'&end_date='.$d; $result = @file_get_contents($url, false); $rs=json_decode($result,true); $this->data['count']=50000-$rs['stats'][0]['request']; $this->data['list']=$list; $this->data['selectemail'] = true; // $this->data['adminArray'] = $_SESSION['userArray']; $this->render ( 'admin/mailList', $this->data, TRUE ); } function postEmail(){ if (empty($_SESSION['main'])) { return Doo::conf()->APP_URL . 'm'; } Doo::loadModel('/m/emailList'); $eMList = new emailList(); $eid=isset($this->params['eid'])?$this->params['eid']:0; $es=isset($this->params['es'])?$this->params['es']:0; if (!empty($eid)&&!empty($es)){ $eMailList=$eMList->getOne(array('where'=>'eid ='.$eid.' and EmailName'.$es.'=""','asArray'=>true)); //防止2次点击 $sql = "update `zh_emailList` set EmailName".$es."='1' where eid = '" . $eid."'"; Doo::db ()->query ( $sql ); $toFormatMail=array();$sub=array(); $toMail=json_decode($eMailList['Email'.$es],true); if ($eMailList['stype']==1){ //'api_user=***&api_key=***&from=test@test.com&fromname=来自测试发送&subject=测试&template_invoke_name=ifaxin_bill&replyto=reply@test.com&label=16800&resp_email_id=true&use_maillist=true&to=users@maillist.sendcloud.org' http://sendcloud.sohu.com/webapi/mail.send_template.json $urlST='http://sendcloud.sohu.com/webapi/mail.send_template.json'; $param = array('api_user' => 'postmaster@zhzd.sendcloud.org', 'api_key' => 'cDO1GjtY1seH', 'from' =>'postmaster@zhzd.sendcloud.org', 'fromname' => '123', 'template_invoke_name'=>'sso_mail', //'subject' => $eMailList['title'], 'labelId'=>'5787', 'use_maillist'=>TRUE, 'to'=>'sso@maillist.sendcloud.org', ); $post_data = http_build_query($param); $post_data='api_user=postmaster@zhzd.sendcloud.org&api_key=cDO1GjtY1seH&from=postmaster@zhzd.sendcloud.org&fromname=纵横软件&template_invoke_name=sso_mail&use_maillist=true&to=sso@maillist.sendcloud.org'; $ch = curl_init(); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_URL,$urlST); //curl_setopt($ch, CURLOPT_HEADER, false); //设定是否输出页面内容 //curl_setopt($ch, CURLOPT_NOBODY, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); $result =curl_exec($ch); curl_close($ch); return '/m/mailList'; die; } if($eMailList['stype']==2){ $sitePath=Doo::conf()->SITE_PATH.'protected/class/'; if($es==1) $toMail=file_get_contents($sitePath."20000.php", false); if($es==2) $toMail=file_get_contents($sitePath."40000.php", false); if($es==3) $toMail=file_get_contents($sitePath."60000.php", false); $toMail=json_decode($toMail,true); } $chunkMail=array_chunk($toMail,80); foreach ($chunkMail as $key=>$value){ $l=$con=array(); $toFormatMail['to']=$value; //for ($cn=1;$cn<=count($value);$cn++){ // array_push($l, $eMailList['title']); //array_push($con, $eMailList['content']); //} //$sub['%eTitle%']=$l; //$sub['%content%']=$con; //$toFormatMail['sub']=$sub; //print_r($toFormatMail);die; $url = 'http://sendcloud.sohu.com/webapi/mail.send_template.xml'; $fromname='纵横软件'; if($eMailList['stype']==2) $fromname='网络版'; $param = array('api_user' => 'postmaster@zhzd.sendcloud.org', 'api_key' => 'cDO1GjtY1seH', 'template_invoke_name'=>'sso_mail', 'from' =>'postmaster@zhzd.sendcloud.org',// 'postmaster@zhzd.sendcloud.org', 'fromname' => $fromname, 'labelId'=>'5787', 'subject' => $eMailList['title'], 'substitution_vars' => json_encode($toFormatMail)); $options = array('http' => array('method' => 'POST',"Content-type: application/x-www-form-urlencoded ",'content' => http_build_query($param))); $context = stream_context_create($options); if (!empty($toFormatMail['to'])){ $result = file_get_contents($url, false, $context); } //if($result=='success'){ // $eM=new eMailList(); // $eM->status='2'; // $eM->update(array('where'=>'elid=?','param'=>array($elid))); // } } return '/m/mailList'; } } /** * 添加邮件任务 */ function manage_add_email_task() { $data ['email_title'] = $this->get_args ( "email_title" ); $data ['email_content'] = $this->get_args ( "email_content" ); if (empty ( $data ['email_title'] ) || empty ( $data ['email_content'] )) { echo "email_title is empty or email_content is empty"; die (); } $id = $this->email_task->add_email_task ( $data ); } /** * 发送邮件任务 */ function manage_send_email_task() { $tid = $this->check_params ( 'tid' ); $tid = is_numeric ( $tid ) ? $tid : 0; if ($tid == 0) { echo "plase input tid"; die (); } $e_task = $this->email_task->get_email_task_by_tid ( $tid ); $i = 0; $faild_count = 0; $error_email = ""; $faild_email = ""; // foreach ( $e_task ['user_list'] as $key => $value ) { // // //邮件是否正确 // if (filter_var ( $value ['useremail'], FILTER_VALIDATE_EMAIL )) { // //$value ['useremail']; // //邮件是否发送成功 // $is_send = $this->email_task->send_email ( "cpthought@vip.qq.com",$e_task['email_title'],$e_task['email_content'] ); // // if (! $is_send) { // // $faild_email .= $value ['useremail'] . ","; // // $faild_count ++; // } // $i ++; // } else { // // $error_email .= "邮箱不正确用户:" . $value ['username'] . "
"; // } // usleep(500000); // } // $this->data ['send_count'] = $e_task ['send_count']; // // $this->data ['is_send_count'] = $e_task ['is_send_count'] + $i; // // $percent = $this->data ['is_send_count'] / $e_task ['send_count'] * 100; // // $this->data ['percent'] = round ( $percent, 2 ) . "%"; // // $this->data ['error_email'] = $error_email; // // $this->data ['faild_count'] = $faild_count; $this->data ['send_count'] = $e_task ['send_count']; $this->data ['is_send_count'] = 0; $this->data ['percent'] = "0%"; $this->data ['error_email'] = ""; $this->data ['faild_count'] = 0; $this->data ['tid'] = $tid; //更新邮件进度 // $this->email_task->update_email_task_by_tid ( $tid, $this->data ['is_send_count'], $faild_email ); // // if($this->data ['is_send_count']>=$this->data ['send_count']){ // // $this->email_task->update_email_task_by_faild_email($tid); // } $this->render ( 'admin/issendMail', $this->data, TRUE ); } /** * ajax发送邮件任务 */ function manage_ajax_send_email_task() { $tid = $this->check_params ( 'tid' ); $tid = is_numeric ( $tid ) ? $tid : 0; if ($tid == 0) { echo "plase input tid"; die (); } $e_task = $this->email_task->get_email_task_by_tid ( $tid ); //群发邮件已完成 if ($e_task ['status'] == 3 || $e_task ['status'] == 4) { $data_list ['is_over'] = 2; $json = json_encode ( $data_list ); echo $json; return false; } $i = 0; $faild_count = 0; $error_email = ""; $faild_email = ""; if (! empty ( $e_task )) { require_once './protected/config/email_stmp.conf.php'; $stmp_i = 0; foreach ( $e_task ['user_list'] as $key => $value ) { //邮件是否正确 if (filter_var ( $value ['useremail'], FILTER_VALIDATE_EMAIL )) { //邮件是否发送成功 "cpthought@vip.qq.com"$value ['useremail'] 914630468@qq.com $is_send = $this->email_task->send_email ( $value ['useremail'], $e_task ['email_title'], $e_task ['email_content'], $stmp [$stmp_i] ['host'], $stmp [$stmp_i] ['port'], $stmp [$stmp_i] ['username'], $stmp [$stmp_i] ['password'], $stmp [$stmp_i] ['form'] ); if (! $is_send) { $faild_email .= $value ['useremail'] . ","; $faild_count ++; } $stmp_i ++; if ($stmp_i == 30) $stmp_i = 0; $i ++; } else { $error_email .= "邮箱不正确用户:" . $value ['username'] . "
"; } usleep ( 50000 ); } $data_list = array (); $data_list ['send_count'] = $e_task ['send_count']; $data_list ['is_send_count'] = $e_task ['is_send_count'] + $i; $percent = $data_list ['is_send_count'] / $e_task ['send_count'] * 100; $data_list ['percent'] = round ( $percent, 2 ) . "%"; $data_list ['error_email'] = $error_email; $data_list ['faild_count'] = $faild_count; $data_list ['tid'] = $tid; $data_list ['is_over'] = 1; //更新邮件进度 $this->email_task->update_email_task_by_tid ( $tid, $data_list ['is_send_count'], $faild_email ); } if ($data_list ['is_send_count'] >= $data_list ['send_count']) { $data_list ['is_over'] = 2; $this->email_task->update_email_task_by_faild_email ( $tid ); } $json = json_encode ( $data_list ); echo $json; } /** * 发送邮件任务 */ function manage_faild_email_task() { $tid = $this->check_params ( 'tid' ); $tid = is_numeric ( $tid ) ? $tid : 0; if ($tid == 0) { echo "plase input tid"; die (); } $e_task = $this->email_task->get_faild_email_task_by_tid ( $tid ); $faild_array = explode ( ",", $e_task ['faild_uid'] ); $this->data ['send_count'] = count($faild_array); $this->data ['is_send_count'] = 0; $this->data ['tid'] = $tid; $this->render ( 'admin/isfaildMail', $this->data, TRUE ); } /** * 发送失败文件 */ function manage_send_faild_email_task() { $tid = $this->check_params ( 'tid' ); $tid = is_numeric ( $tid ) ? $tid : 0; if ($tid == 0) { echo "plase input tid"; die (); } $e_task = $this->email_task->get_faild_email_task_by_tid ( $tid ); $faild_email = ""; $error_email=""; if (! empty ( $e_task )) { //群发邮件已完成 if ($e_task ['status'] != 3) { echo "send email is complate1"; return false; }elseif(empty($e_task['faild_uid'])){ $this->email_task->update_email_task_status_by_tid ( $tid, 4 ); echo "send email is complate2"; return false; } $faild_array = explode ( ",", $e_task ['faild_uid'] ); require_once './protected/config/email_stmp.conf.php'; $stmp_i = 0; $i=0; $k=$s=""; foreach ($faild_array as $key=>$value){ //邮件是否正确 if (!empty($value)&&filter_var ( $value , FILTER_VALIDATE_EMAIL )) { //邮件是否发送成功 "cpthought@vip.qq.com" $value ['useremail'] 914630468@qq.com $is_send = $this->email_task->send_email ( $value , $e_task ['email_title'], $e_task ['email_content'], $stmp [$stmp_i] ['host'], $stmp [$stmp_i] ['port'], $stmp [$stmp_i] ['username'], $stmp [$stmp_i] ['password'], $stmp [$stmp_i] ['form'] ); if (! $is_send) { $faild_email .= $value . ","; $k.= $value. ","; unset($faild_array[$i]); }else{ $s.= $value. ","; unset($faild_array[$i]); } $stmp_i ++; if ($stmp_i == 30) $stmp_i = 0; } else { $error_email .= "邮箱不正确用户:" . $value . "
"; } usleep ( 50000 ); if($i==28) break; $i++; } // $t=implode(",",$faild_array); $this->email_task->update_faild_email_task_by_tid ( $tid, $t ); $this->email_task->de_faild_email_task_by_tid ( $tid, $e_task['de_email'].$faild_email ); $data_list = array (); $data_list ['send_count'] = count($faild_array); $data_list ['is_send_count'] = $i+1; $data_list ['tid'] = $tid; $data_list['error_email']=$k; $data_list ['is_over'] = 1; if (count($faild_array) <= 0) { $data_list ['is_over'] = 2; } $json = json_encode ( $data_list ); echo $json; } } /** * 删除邮件任务 */ function manage_delete_email_task() { $tid = $this->check_params ( 'tid' ); $tid = is_numeric ( $tid ) ? $tid : 0; if ($tid == 0) { echo "plase input tid"; die (); } $e_task = $this->email_task->delete_email_task_by_tid ( $tid ); } /** * 获取get或者POST值 * @param string $name 属性名称 * @return fixed 值 */ function get_args($name) { if (isset ( $_GET [$name] )) { if (is_array ( $_GET [$name] )) return $_GET [$name]; else return addslashes ( $_GET [$name] ); } elseif (isset ( $_POST [$name] )) { if (is_array ( $_POST [$name] )) return $_POST [$name]; else return addslashes ( $_POST [$name] ); } else { return false; } } /** * 检测数据输入的非法字符和转义非法字符 */ function check_params($name = "") { if (isset ( $this->params [$name] )) { return mysql_escape_string ( $this->params [$name] ); } else { return false; } } } ?>