織夢cmsf表單提交到郵箱 織夢表單發送到郵箱 織夢自定義表單發郵箱


大家在做織夢做網站開發時會遇到一個問題:織夢的自定義表單是一個很雞肋的功能,不僅在后台展示得奇丑,而且也沒有提醒功能,使用起來很不方便。很多人用織夢自定義表單時,都想用戶提交表單的時候可以發送到自己的郵箱里面去提醒自己。這樣省了經常去織夢網站后台看最新的表單情況。

第一步:打開織夢后台,系統->核心參數 開啟smtp

第二步:

修改/plus/diy.php代碼。打開網站根目錄下的plus文件 夾,里面有個diy.php文件(表單提交后處理文件),打開它,在85行上下有如下代碼: $query = "INSERT INTO `{$diy->table}` (`id`, `ifcheck` $addvar)  VALUES (NULL, 0 $addvalue); ";這個代碼就是將表單數據寫入數據庫,那么我們就在他下方,加上發送郵件的功能,代碼如下:

$mailtitle = "用戶訂單信息";//郵件標題
$mailbody = "稱呼:{$name}\r\n郵箱:{$email}\r\n所在城市:{$city}\r\n國家:{$guojia}\r\n電話:{$tel}\r\n類別:{$qudao}";//$name中name是該input元素的id號
$headers = $cfg_adminemail;//用我們剛才設置的管理員郵箱發送
$mailtype = 'TXT';//郵件類型為文本類型
require_once(DEDEINC.'/mail.class.php');//加載織夢的郵件庫
$smtp = new smtp($cfg_smtp_server,$cfg_smtp_port,true,$cfg_smtp_usermail,$cfg_smtp_password);//創建smtp服務
$smtp->debug = false;//不起用調試
$smtp->sendmail($cfg_smtp_usermail,$cfg_webname ,$cfg_smtp_usermail, $mailtitle, $mailbody, $mailtype);//發送郵件

第三步:打開qq或者其他郵箱找到設置並開啟smtp

我是以新浪為例(ps:不會自行百度)

到這就完成了可以發送郵件測試了。

我測試新浪有編碼問題修改如下:

首先我們打開織夢的郵件發送文件,include/mail.class.php文件,查找以下的代碼:
$header .= "Content-Type:text/html \r\n" ;修改成  
$header .= "Content-Type:text/html; charset=utf-8\r\n";
 
查找到:$header .= "From: $webname<".$from.">\r\n";
在此行代碼上面添加一行代碼:
$webname = "=?".$GLOBALS['cfg_soft_lang']."?B?".base64_encode('標題名稱標題名稱')."?=";

到這算正式完成

但新浪還是有點小問題,出現的內容還是有編碼問題,但標題已經ok不影響使用(ps:你要知道什么問題可以告訴我在修正)

 

注意:如果自定義表單發送郵箱不成功,一般有如下的原因:
無論是哪個供商商的郵箱都要開啟smtp服務。smtp服務一般在郵箱設置選項里面都可以選擇。
郵箱是否設置獨立密碼,如果設置了獨立密碼,那么請用獨立密碼。

 

-----------------------------------------------------------------------------

新添加

自定義表單有2個或者2個以上發送郵件的方式 判斷  $diyid 來進行發送郵件

if($diyid==1){//2個以上自定義表單寫法,一個去掉if else 就行
     $mailtitle = $name."--{$diy->name}";//$diy->name獲取自定義表單名稱
     $mailbody = "稱呼:{$name}\r\n郵箱:{$phone}\r\n內容:{$beizhu}";
 }else{
     $mailtitle = $name."--{$diy->name}";
     $mailbody = "郵箱:{$eml}\r\n通用:{$tong}";
}
$headers = $cfg_adminemail;
$mailtype = 'TXT';
require_once(DEDEINC.'/mail.class.php');
$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);

添加安全機制驗證

增加Cookies驗證,在53行下面增加 if(!is_array($diyform))

//增加Cookies驗證
        if(isset($_COOKIE['VOTE_MEMBER_IP'])){
            if($_COOKIE['VOTE_MEMBER_IP'] == $_SERVER['REMOTE_ADDR']){
                ShowMsg('您已經填寫過表單啦','-1');
                exit();
            }else{
                setcookie('VOTE_MEMBER_IP',$_SERVER['REMOTE_ADDR'],time()*$row['spec']*3600,'/');
            }
        }else{
            setcookie('VOTE_MEMBER_IP',$_SERVER['REMOTE_ADDR'],time()*$row['spec']*3600,'/');
        }

增加 php 正則驗證 對於不懂的來說在頁面中增加js判斷驗證就可以,但對於懂行的來說有n種方法跳過,最好就是增加數據庫寫入之前在驗證一次

搜索 $query = "INSERT INTO `{$diy->table}` (`id`, `ifcheck` $addvar)  VALUES (NULL, 0 $addvalue); ";在這個的上面添加就行

//添加php驗證,其中的 $phone 和 $email 就是提交的手機號和email字段名,實際使用的時候修改驗證字段為你的字段即可
//驗證手機號
if(!eregi("^13[0-9]{9}|15[0-9]{9}$",$phone)){
  showMsg('手機號不對,請正確填寫', '-1');
  exit();
}
//驗證email
if (!eregi("^[_\.0-9a-z-]+@([0-9a-z]+[0-9a-z-]+\.)+[a-z]{2,3}$",$email)) {
  showMsg('請您填寫正確的E-Mail 地址!', '-1');
  exit();
}

 

 

 

 

收集的網址

https://9iphp.com/opensystem/dede/871.html 

https://blog.csdn.net/shuanghusun/article/details/52070993

https://9iphp.com/opensystem/dede/1054.html

http://www.szlikun.cn/news/jishufenxiang/article-246.html

http://www.zuimoban.com/php/dedecms/8456.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM