织梦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