织梦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:不会自行百度)

到这就完成了可以发送邮件测试了。
我测试新浪有编码问题修改如下:
$header .= "Content-Type:text/html \r\n";修改成 到这算正式完成
但新浪还是有点小问题,出现的内容还是有编码问题,但标题已经ok不影响使用(ps:你要知道什么问题可以告诉我在修正)

-----------------------------------------------------------------------------
新添加
自定义表单有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
织梦cmsf表单提交到邮箱 织梦表单发送到邮箱 织梦自定义表单发邮箱的更多相关文章
- js表单提交,判断文本框,用户名密码是否为空,JS表单检测!
当表单提交时先触发验证的js代码,当验证表单的方法返回true时才会提交表单返回false则不提交数据<script type="text/javascript">fu ...
- HTML5:表单提交
不加CSS.JavaScrips的HTML表单提交简单代码 <!DOCTYPE html> <html lang="en"> <head> &l ...
- 关于form与表单提交操作的一切
原文链接:http://caibaojian.com/form.html 你知道,一个表单里面只要有form元素,如果没有给action加一个默认值,为空白的时候,当你刷新页面时,会弹出一个警告框提示 ...
- php开发面试题---2、php常用面试题二(表单提交方式中的get和post有什么区别)
php开发面试题---2.php常用面试题二(表单提交方式中的get和post有什么区别) 一.总结 一句话总结: 数据位置:get参数在url里面,post在主体里面 数据大小:get几kb,pos ...
- yii2表单提交CSRF验证
Yii2表单提交默认需要验证CSRF,如果CSRF验证不通过,则表单提交失败,解决方法如下: 第一种解决办法是关闭Csrf public $enableCsrfValidation = false; ...
- 如何实现织梦dedecms表单提交时发送邮箱功能【已解决】
我们通过织梦系统制作网站时,很多客户需要有在线留言功能,这时就会用到自定义表单.但是很多用户觉得经常登陆后台查看留言信息太麻烦了,于是想能否在提交留言是直接把内容发送到指定邮箱.网站经过测试终于实现了 ...
- DedeCMS实现自定义表单提交后发送指定QQ邮箱法
https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=monline_3_dg&wd=dedecms 邮箱&oq=d ...
- DedeCMS实现自定义表单提交后发送指定QQ邮箱的方法
如月cruyue在做DedeCMS自定义表单发送邮箱的教程,发现大部分都是在php文件里写死固定字段内容,这样虽然也能实现自定义表单提交后发送指定邮箱,但是很不智能,如月cruyue想要一个我们自定义 ...
- golang-web框架revel一个表单提交的总结
这里要介绍好是revel框架的表单post提交的列子,主要是用于入门学习,和一些知识点的讲解: 首先: 来了解一个问题那就是重复提交表单,做过form表单提交的同学都知道,如果表单提交后不做处理,那么 ...
随机推荐
- 06-switch语句
switch语句 switch是一个条件语句,它是可以代替多个if else的常用方式 例子 package main import "fmt" func main() { a:= ...
- R学习笔记3 数据处理
1,日期类型 日期类型比较特殊,日期值通常以字符串的形式输入到R中,然后使用as.Date()函数转换为以数值形式存储的日期变量 mydate <- as.Date("2019-01- ...
- php 中header头的使用
header("content-type:text/html;charset=utf-8");//页面字符集的设置 header("location:index.php& ...
- CCF 2016-09-2 火车购票
CCF 2016-09-2 火车购票 题目 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排5个座位.为方便起见,我们用1到100来给所有的 ...
- 一张图看懂SharpImage
通过下面的图片,可以瞬间看懂整个类库的脉络.图片比较大,如果看不清,可
- MSMQ消息加密
证书实现非对称加密/解密的代码如下 //非对称加密密钥 static byte[] RSAEncrypt(byte[] enkey, X509Certificate2 Certificate) { R ...
- Ubuntu 18.04 上使用xrdp远程桌面连接(Windows远程桌面连接)
Ubuntu18.04设置#安装xrdpsudo apt-get install xrdp #安装vnc4serversudo apt-get install vnc4server tightvncs ...
- 怎样用 vue-i18n这个结合vue的$t来实现通过data传值的翻译
<el-row class="searchForm"> <template v-for="(item,index) in searchConfig&qu ...
- 【JavaWEB SSH】jsp页面传值后台Controller 部分值绑定不上实体类
//前端ajax代码 1 var oldpassword = $('#old_password').val(); var password = $('#L_pass').val(); var user ...
- js 算法,判断一个数组中的数字出现多少次
let arr = [11, 11, 2, 2, 5, 5, 5, 5, 3]; //创建一个map,把每个数字和其个数相对应 let countObj = {}; for (i = 0; i < ...