DedeCMS自帶的mail郵箱功能不僅可以使用在會員注冊驗證上,還能用在在自定義表單提交,站內(nèi)通知提醒(短消息)等,其實這些功能都是mail功能的擴(kuò)展開發(fā)。
下面分享短消息與指定郵箱功能開發(fā),其他需要用到地方直接參考就行了。
1.網(wǎng)站后臺設(shè)置郵箱相關(guān)信息
后臺:系統(tǒng)>系統(tǒng)基本參數(shù)>核心設(shè)置,看到以下表單,按郵箱設(shè)置,注意網(wǎng)站發(fā)信emall和下面的smtp服務(wù)器都要相同。
2.指定的郵箱設(shè)置
每個郵箱都對應(yīng)的POP3/SMTP/IMAP設(shè)置,參考相關(guān)說明即可,這里需要注意的是新的163或者QQ郵箱都有獨(dú)立密碼或者授權(quán)碼,為了安全需要,還是需要設(shè)置好授權(quán)碼或獨(dú)立密碼,這個密碼就是SMTP服務(wù)器的用戶密碼,不是郵箱的密碼。
3.自定義表單提交后管理員后臺收到短信息并發(fā)送到指定郵箱
前面寫過對應(yīng)的文章《最全實現(xiàn)dede訂單表單提交發(fā)送到指定郵箱(附前臺設(shè)置)》,這里不累述了。
4.會員提交文章審核,向?qū)?yīng)的會員發(fā)送消息
①提取發(fā)表者ID,也就是會員中心的mid。打開/dede/archives_do.php,表前綴找到
$query = "SELECT arc.id,arc.typeid,ch.issystem,ch.maintable,ch.addtable FROM `dede_arctiny` arc LEFT JOIN `dede_arctype` tp ON tp.id=arc.typeid LEFT JOIN `dede_channeltype` ch ON ch.id=tp.channeltype WHERE arc.id in($arcids) ";
修改為
$query = "SELECT arc.id,arc.mid,arc.typeid,ch.issystem,ch.maintable,ch.addtable FROM `dede_arctiny` arc
LEFT JOIN `dede_arctype` tp ON tp.id=arc.typeid
LEFT JOIN `dede_channeltype` ch ON ch.id=tp.channeltype
WHERE arc.id in($arcids) ";
②獲取發(fā)布短消息時間,找到
$dsql->Execute('ckall');
在下面添加
$dtime = time();
③提取用戶ID,并把所有信息寫入短消息,發(fā)送一條短信息給對應(yīng)的發(fā)布者,找到
$dsql->ExecuteNoneQuery("Update `dede_member` set scores=scores+{$cfg_sendarc_scores} where mid='".$cfg_ml->M_ID."' ; ");
下面添加
$mid = $row['mid']; $dsql->ExecuteNoneQuery("INSERT INTO `dede_member_pms` (`floginid`,`fromid`,`toid`,`folder`,`subject`,`sendtime`,`writetime`,`hasview`,`isadmin`,`message`) VALUES ('admin','1','$mid','inbox','mengdiqiu.com.cn文檔審核消息!','$dtime','$dtime','0','0','您的文章已經(jīng)經(jīng)過了本站的審核!')");
④向指定郵箱發(fā)送消息
在上面代碼下添加下面的通用代碼:
require_once(DEDEINC.'/mail.class.php'); $mailtitle = $mid . "提交了文檔審核"; //郵件標(biāo)題 $mailbody = "稱呼:{$mid}提交了文檔審核,請登錄"; //郵件正文,根據(jù)實際需求調(diào)用對應(yīng)的字段 $headers = $cfg_adminemail; $mailtype = 'TXT'; $smtp = new smtp($cfg_smtp_server,$cfg_smtp_port,true,$cfg_smtp_usermail,$cfg_smtp_password); $smtp->debug = false; $smtp->sendmail($cfg_smtp_usermail,$cfg_webname ,$cfg_smtp_usermail, $mailtitle, $mailbody, $mailtype);