zoukankan      html  css  js  c++  java
  • 织梦cmsf表单提交到邮箱 织梦表单发送到邮箱 织梦自定义表单发邮箱

    大家在做织梦做网站开发时会遇到一个问题:织梦的自定义表单是一个很鸡肋的功能,不仅在后台展示得奇丑,而且也没有提醒功能,使用起来很不方便。很多人用织梦自定义表单时,都想用户提交表单的时候可以发送到自己的邮箱里面去提醒自己。这样省了经常去织梦网站后台看最新的表单情况。

    第一步:打开织梦后台,系统->核心参数 开启smtp

    第二步:

    修改/plus/diy.php代码。打开网站根目录下的plus文件 夹,里面有个diy.php文件(表单提交后处理文件),打开它,在85行上下有如下代码: $query = "INSERT INTO `{$diy->table}` (`id`, `ifcheck` $addvar)  VALUES (NULL, 0 $addvalue); ";这个代码就是将表单数据写入数据库,那么我们就在他下方,加上发送邮件的功能,代码如下:

    $mailtitle = "用户订单信息";//邮件标题
    $mailbody = "称呼:{$name}
    邮箱:{$email}
    所在城市:{$city}
    国家:{$guojia}
    电话:{$tel}
    类别:{$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 ";修改成  
    $header .= "Content-Type:text/html; charset=utf-8 ";
     
    查找到:$header .= "From: $webname<".$from."> ";
    在此行代码上面添加一行代码:
    $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}
    邮箱:{$phone}
    内容:{$beizhu}";
     }else{
         $mailtitle = $name."--{$diy->name}";
         $mailbody = "邮箱:{$eml}
    通用:{$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

  • 相关阅读:
    wx_sample.php

    手机装linux系统
    MySQL导入导出命令
    PHP对表单提交特殊字符的过滤和处理
    sublime开启php自动代码补全
    寻找Linux单机负载瓶颈
    怎样成为PHP 方向的一个合格的架构师
    说说大型高并发高负载网站的系统架构
    数据库水平分割,垂直分割,库表散列浅谈
  • 原文地址:https://www.cnblogs.com/li-sir/p/9441818.html
Copyright © 2011-2022 走看看