www.gusucode.com > 74cms PHP骑士人才系统 v3.5.1源码程序 > code/upload/admin/admin_mailqueue.php

    <?php
 /*
 * 74cms 邮件群发
 * ============================================================================
 * 版权所有: 骑士网络,并保留所有权利。
 * 网站地址: http://www.74cms.com;
 * ----------------------------------------------------------------------------
 * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和
 * 使用;不允许对程序代码以任何形式任何目的的再发布。
 * ============================================================================
*/
define('IN_QISHI', true);
require_once(dirname(__FILE__).'/../data/config.php');
require_once(dirname(__FILE__).'/include/admin_common.inc.php');
require_once(ADMIN_ROOT_PATH.'include/admin_mailqueue_fun.php');
$act = !empty($_GET['act']) ? trim($_GET['act']) : 'list';
check_permissions($_SESSION['admin_purview'],"mailqueue");
$smarty->assign('pageheader',"邮件群发");
if($act == 'list')
{
	get_token();
	require_once(QISHI_ROOT_PATH.'include/page.class.php');
	$key=isset($_GET['key'])?trim($_GET['key']):"";
	$key_type=isset($_GET['key_type'])?intval($_GET['key_type']):"";
	if (!empty($key) && $key_type>0)
	{
		
		if     ($key_type===1)$wheresql=" WHERE m_subject like '%{$key}%'";
		if     ($key_type===2)$wheresql=" WHERE m_mail = '{$key}'";
		$oederbysql="";
	}
	$_GET['m_type']<>''? $wheresqlarr['m_type']=intval($_GET['m_type']):'';
	if (!empty($wheresqlarr)) $wheresql=wheresql($wheresqlarr);
	$total_sql="SELECT COUNT(*) AS num FROM ".table('mailqueue').$wheresql;
	$page = new page(array('total'=>$db->get_total($total_sql), 'perpage'=>$perpage));
	$currenpage=$page->nowindex;
	$offset=($currenpage-1)*$perpage;
	$list = get_mailqueue($offset,$perpage,$wheresql.$oderbysql);
	$smarty->assign('navlabel',"list");
	$smarty->assign('list',$list);
	$smarty->assign('page',$page->show(3));
	$smarty->display('mailqueue/admin_mailqueue_list.htm');
}
elseif($act == 'mailqueue_add')
{
	get_token();
	$label[]=array('{sitename}','网站名称');
	$label[]=array('{sitedomain}','网站域名');
	$label[]=array('{sitelogo}','网站LOGO');
	$label[]=array('{address}','联系地址');
	$label[]=array('{tel}','联系电话');
	$smarty->assign('label',$label);
	$smarty->assign('navlabel','add');
	$smarty->display('mailqueue/admin_mailqueue_add.htm');
}
elseif($act == 'mailqueue_add_save')
{
	check_token();
	$setsqlarr['m_mail']=trim($_POST['m_mail'])?trim($_POST['m_mail']):adminmsg('邮件地址必须填写!',1);
	if (!preg_match("/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/",$setsqlarr['m_mail'])) 
    {
	adminmsg('邮箱格式错误!',1);
    }
	$uid=$db->getone('select uid from '.table('members')." where email= '{$setsqlarr['m_mail']}' limit 1 ");
	$setsqlarr['m_subject']=trim($_POST['m_subject'])?replace_label($_POST['m_subject']):adminmsg('邮件标题必须填写!',1);	
	$setsqlarr['m_body']=trim($_POST['m_body'])?replace_label($_POST['m_body']):adminmsg('邮件内容必须填写!',1);
	$setsqlarr['m_addtime']=time();
	$setsqlarr['m_uid']=$uid['uid'];
	$link[0]['text'] = "继续添加";
	$link[0]['href'] = '?act=mailqueue_add';
	$link[1]['text'] = "返回列表";
	$link[1]['href'] = '?';
	!inserttable(table('mailqueue'),$setsqlarr)?adminmsg("添加失败!",0):adminmsg("添加成功!",2,$link);
}
elseif($act == 'mailqueue_edit')
{
	get_token();
	$label[]=array('{sitename}','网站名称');
	$label[]=array('{sitedomain}','网站域名');
	$label[]=array('{sitelogo}','网站LOGO');
	$label[]=array('{address}','联系地址');
	$label[]=array('{tel}','联系电话');
	$smarty->assign('label',$label);
	$smarty->assign('show',get_mailqueue_one($_GET['id']));
	$smarty->display('mailqueue/admin_mailqueue_edit.htm');
}
elseif($act == 'mailqueue_edit_save')
{
	check_token();
	$setsqlarr['m_mail']=trim($_POST['m_mail'])?trim($_POST['m_mail']):adminmsg('邮件地址必须填写!',1);
	if (!preg_match("/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/", $setsqlarr['m_mail'])) 
    {
	adminmsg('邮箱格式错误!',1);
    }
	$setsqlarr['m_subject']=trim($_POST['m_subject'])?replace_label($_POST['m_subject']):adminmsg('邮件标题必须填写!',1);
	$setsqlarr['m_body']=trim($_POST['m_body'])?replace_label($_POST['m_body']):adminmsg('邮件内容必须填写!',1);
	$link[0]['text'] = "返回列表";
	$link[0]['href'] = '?';
	$wheresql=" m_id='".intval($_POST['id'])."' ";
	!updatetable(table('mailqueue'),$setsqlarr,$wheresql)?adminmsg("修改失败!",0):adminmsg("修改成功!",2,$link);
}
elseif($act == 'mailqueue_batchadd')
{
	get_token();
	$label[]=array('{sitename}','网站名称');
	$label[]=array('{sitedomain}','网站域名');
	$label[]=array('{username}','会员用户名');
	$label[]=array('{lastlogintime}','最后登录时间');
	$label2[]=array('{sitelogo}','网站LOGO');
	$label2[]=array('{address}','联系地址');
	$label2[]=array('{tel}','联系电话');
	$smarty->assign('label',$label);
	$smarty->assign('label2',array_merge($label,$label2));
	$smarty->assign('navlabel','batchadd');
	$smarty->display('mailqueue/admin_mailqueue_batchadd.htm');
}
elseif($act == 'mailqueue_batchadd_save')
{
	check_token();
	$selutype=intval($_POST['selutype']);
	$selsettr=intval($_POST['selsettr']);
	if ($selutype>0)
	{
	$wheresql=" WHERE utype='{$selutype}' ";
	}	
	if ($selsettr>0)
	{
		$wheresql.=empty($wheresql)?" WHERE ":" AND ";
		$data=strtotime("-{$selsettr} day");
		$wheresql.=" last_login_time<".$data;
	}
	$m_subject=!empty($_POST['m_subject'])?trim($_POST['m_subject']):adminmsg('邮件标题必须填写!',1);	
	$m_body=!empty($_POST['m_body'])?trim($_POST['m_body']):adminmsg('邮件内容必须填写!',1);
	$result = $db->query("SELECT * FROM ".table('members').$wheresql);
	$n=0;
	while($user = $db->fetch_array($result))
	{
 		$setsqlarr['m_uid']=$user['uid'];
 		$setsqlarr['m_mail']=$user['email'];
		$setsqlarr['m_subject']=replace_label($m_subject,$user);	
		$setsqlarr['m_body']=replace_label($m_body,$user);
		$setsqlarr['m_addtime']=time();
		!inserttable(table('mailqueue'),$setsqlarr)?adminmsg("添加失败!",0):'';
		$n++;
	}
	$link[0]['text'] = "返回列表";
	$link[0]['href'] = '?';
	adminmsg("添加成功,共添加 {$n} 行 ",2,$link);
}
elseif($act == 'totalsend')
{
	$sendtype=intval($_POST['sendtype']);
	$intervaltime=intval($_POST['intervaltime'])==0?3:intval($_POST['intervaltime']);
	$sendmax=intval($_POST['sendmax']);
	$senderr=intval($_POST['senderr']);
	if ($sendmax>0)
	{
	$limit=" LIMIT {$sendmax} ";
	}
	if ($sendtype===1)
	{
		$id=$_POST['id'];
		if (empty($id))
		{
		adminmsg("请选择项目!",1);
		}
		if(!is_array($id)) $id=array($id);
		$sqlin=implode(",",$id);
		if (preg_match("/^(\d{1,10},)*(\d{1,10})$/",$sqlin))
		{
			$result = $db->query("SELECT m_id FROM ".table('mailqueue')." WHERE  m_id IN ({$sqlin}) {$limit}");
			while($row = $db->fetch_array($result))
			{
			$idarr[] = $row['m_id'];
			}
			if (empty($idarr))
			{
				adminmsg("没有可发送的邮件",1);
			}
			@file_put_contents(QISHI_ROOT_PATH."temp/send.txt", serialize($idarr));
			header("Location:?act=send&senderr={$senderr}&intervaltime={$intervaltime}");
		}
		
	}
	elseif ($sendtype===2)
	{
			$result = $db->query("SELECT m_id FROM ".table('mailqueue')." WHERE m_type=0 {$limit}");
			while($row = $db->fetch_array($result))
			{
			$idarr[] = $row['m_id'];
			}
			if (empty($idarr))
			{
				adminmsg("没有可发送的邮件",1);
			}
			@file_put_contents(QISHI_ROOT_PATH."temp/send.txt", serialize($idarr));
			header("Location:?act=send&senderr={$senderr}&intervaltime={$intervaltime}");
	}
	elseif ($sendtype===3)
	{
			$result = $db->query("SELECT m_id FROM ".table('mailqueue')." WHERE m_type=2 {$limit}");
			while($row = $db->fetch_array($result))
			{
			$idarr[] = $row['m_id'];
			}
			if (empty($idarr))
			{
				adminmsg("没有可发送的邮件",1);
			}
			@file_put_contents(QISHI_ROOT_PATH."temp/send.txt", serialize($idarr));
			header("Location:?act=send&senderr={$senderr}&intervaltime={$intervaltime}");
	}
}
elseif($act == 'send')
{
	$senderr=intval($_GET['senderr']);
	$intervaltime=intval($_GET['intervaltime']);
	$tempdir=QISHI_ROOT_PATH."temp/send.txt";
	$content = file_get_contents($tempdir);
	$idarr = unserialize($content);
	$totalid=count($idarr);
	if (empty($idarr))
	{
		$link[0]['text'] = "返回邮件列队";
		$link[0]['href'] = '?act=list';
		adminmsg("任务执行完毕!",2,$link);
	}
	else
	{
		 $m_id=array_shift($idarr);
		 @file_put_contents($tempdir,serialize($idarr));
		 $mail =$db->getone("select * from ".table('mailqueue')." where m_id = '".intval($m_id)."' LIMIT 1");
		 $mailconfig=get_cache('mailconfig');
		 	if (!smtp_mail($mail['m_mail'],$mail['m_subject'],$mail['m_body']))
			{
				$db->query("update  ".table('mailqueue')." SET m_type='2'  WHERE m_id = '".intval($m_id)."'  LIMIT 1");
				if ($senderr=="2")
				{
				$link[0]['text'] = "返回邮件列队";
				$link[0]['href'] = '?act=list';
				adminmsg('邮件发送发生错误!'.$senderr,0,$link);
				}
				else
				{
				$link[0]['text'] = "发送下一封";
				$link[0]['href'] = "?act=send&senderr={$senderr}&intervaltime={$intervaltime}";
				adminmsg("发生错误,准备发送下一封,剩余任务总数:".($totalid-1),0,$link,true,$intervaltime);
				}			
			}
			else
			{
			$db->query("update  ".table('mailqueue')." SET m_type='1',m_sendtime='".time()."'  WHERE m_id = '".intval($m_id)."'  LIMIT 1");
			$link[0]['text'] = "发送下一封";
			$link[0]['href'] = "?act=send&senderr={$senderr}&intervaltime={$intervaltime}";
			adminmsg("发送成功,准备发送下一封,剩余任务总数:".($totalid-1),2,$link,true,$intervaltime);
			}
	}	
}
elseif($act == 'del')
{
	$n=0;
	$deltype=intval($_POST['deltype']);
	if ($deltype===1)
	{
		$id=$_POST['id'];
		if (empty($id))
		{
		adminmsg("请选择项目!",1);
		}
		if(!is_array($id)) $id=array($id);
		$sqlin=implode(",",$id);
		if (preg_match("/^(\d{1,10},)*(\d{1,10})$/",$sqlin))
		{
		$db->query("Delete from ".table('mailqueue')." WHERE m_id IN ({$sqlin}) ");
		adminmsg("删除成功",2);
		}
	}
	elseif ($deltype===2)
	{
		$db->query("Delete from ".table('mailqueue')." WHERE m_type=0 ");
		adminmsg("删除成功 $delnum",2);
	}
	elseif ($deltype===3)
	{
		$db->query("Delete from ".table('mailqueue')." WHERE m_type=1 ");
		adminmsg("删除成功",2);
	}
	elseif ($deltype===4)
	{
		$db->query("Delete from ".table('mailqueue')." WHERE m_type=2 ");
		adminmsg("删除成功",2);
	}
	elseif ($deltype===5)
	{
		$db->query("Delete from ".table('mailqueue')."");
		adminmsg("删除成功",2);
	}
}
?>