泉州网页设计培训-DEDECMS自定义表单发送到邮箱

泉州网页设计培训-DEDECMS自定义表单发送到邮箱

    • 自定义表单,由于其具有很强的灵活性,在织梦系统中经常用于留言、下单等等,而后台去查看留言或者订单就不是很方便,所以便有了发送表单信息到邮箱的需求,百度一下会发现这种文章不少,但是很少有真正能用的,或者是说不适合5.7的版本,之前道成也尝试过其他的方法,虽然有可以成功的,但是比较繁琐或者不稳定,甚至有的需要安装插件的,给网站带来安全隐患,自然是舍弃不用了。

    • 要实现将自定义表单信息发送到邮箱,一般来说需要三个步骤:

 

    • 1,配置smtp信息

 

    • 这个可以在系统后台配置然后用变量调用,或者明文配置也可以。

 

    • 一般推荐用后台配置方便修改

DEDECMS自定义表单发送到邮箱-道成设计

    • 2,修改diy.php

 

    • 文件位置/plus/diy.php,这个很常用的,熟悉dede的都知道

 

$query = “INSERT INTO `{$diy->table}` (`id`, `ifcheck` $addvar)  VALUES (NULL, 0 $addvalue); “;
if($dsql->ExecuteNoneQuery($query))
之间
插入以下代码【下面所有蓝色字体都是】:

$addvalue_ary = explode(‘,’, $addvalue);
//因为DEDE是将所有表单数据提交过来,所以这里需要分隔一下。
$addvar_ary = array(
0 => ‘客户地址’,
1 => ‘客户姓名’,
2 => ‘联系电话’,
3 => ‘邮箱’,
4 => ‘留言内容’,
5 => ‘可以一直加N个’,
);
$text = ”;
foreach($addvar_ary as $key=>$value)
{
$text.=$value.’: ‘.$addvalue_ary[$key].'<br>’;
}
$mailmy = ‘收件邮箱地址,第二个邮箱地址,第三个邮箱地址’;
$mailtitle = “收到的邮件的标题”;
$mailbody = $text;
$headers = $cfg_adminemail;
$mailtype = ‘HTML’;
require_once(DEDEINC.’/mail.class.php’);//注意这里要载入mail类
$smtp=new smtp($cfg_smtp_server,$cfg_smtp_port,true,$cfg_smtp_usermail,$cfg_smtp_password);
$smtp->debug = false;
$smtp->sendmail($mailmy,$cfg_webname ,$cfg_smtp_usermail, $mailtitle, $mailbody, $mailtype);

 

    • 具体可以参考我之前修改过的一个diy.php文件

 

<?php
/**
 *
 * 自定义表单
 *
 * @version        $Id: diy.php 1 15:38 2010年7月8日Z tianya $
 * @package        DedeCMS.Site
 * @copyright      Copyright (c) 2007 – 2010, DesDev, Inc.
 * @license        http://help.dedecms.com/usersguide/license.html
 * @link           http://www.dedecms.com
 */
require_once(dirname(__FILE__).”/../include/common.inc.php”);
require_once(DEDEINC.’/membermodel.cls.php’);
$diyid = isset($diyid) && is_numeric($diyid) ? $diyid : 0;
$action = isset($action) && in_array($action, array(‘post’, ‘list’, ‘view’)) ? $action : ‘post’;
$id = isset($id) && is_numeric($id) ? $id : 0;
if(empty($diyid))
{
    showMsg(‘非法操作!’, ‘javascript:;’);
    exit();
}
require_once DEDEINC.’/diyform.cls.php’;
$diy = new diyform($diyid);
/*—————————-
function Post(){ }
—————————*/
if($action == ‘post’)
{
    if(empty($do))
    {
        $postform = $diy->getForm(true);
        include DEDEROOT.”/templets/plus/{$diy->postTemplate}”;
        exit();
    }
    elseif($do == 2)
    {
       //验证码验证
        $svali = GetCkVdValue();
         if(preg_match(“/1/”,$safe_gdopen)){
             if(strtolower($vdcode)!=$svali || $svali==”)
             {
                 ResetVdValue();
                 ShowMsg(‘验证码错误!’, ‘-1’);
                 exit();
             }
         }
        $dede_fields = empty($dede_fields) ? ” : trim($dede_fields);
        $dede_fieldshash = empty($dede_fieldshash) ? ” : trim($dede_fieldshash);
        if(!empty($dede_fields))
        {
            if($dede_fieldshash != md5($dede_fields.$cfg_cookie_encode))
            {
                showMsg(‘数据校验不对,程序返回’, ‘-1’);
                exit();
            }
        }
        $diyform = $dsql->getOne(“select * from dede_diyforms where diyid=’$diyid’ “);
        if(!is_array($diyform))
        {
            showmsg(‘自定义表单不存在’, ‘-1’);
            exit();
        }
        $addvar = $addvalue = ”;
        if(!empty($dede_fields))
        {
            $fieldarr = explode(‘;’, $dede_fields);
            if(is_array($fieldarr))
            {
                foreach($fieldarr as $field)
                {
                    if($field == ”) continue;
                    $fieldinfo = explode(‘,’, $field);
                    if($fieldinfo[1] == ‘textdata’)
                    {
                        ${$fieldinfo[0]} = FilterSearch(stripslashes(${$fieldinfo[0]}));
                        ${$fieldinfo[0]} = addslashes(${$fieldinfo[0]});
                    }
                    else
                    {
                        ${$fieldinfo[0]} = GetFieldValue(${$fieldinfo[0]}, $fieldinfo[1],0,’add’,”,’diy’, $fieldinfo[0]);
                    }
                    $addvar .= ‘, `’.$fieldinfo[0].’`’;
                    $addvalue .= “, ‘”.${$fieldinfo[0]}.”‘”;
                }
            }
        }
        $query = “INSERT INTO `{$diy->table}` (`id`, `ifcheck` $addvar)  VALUES (NULL, 0 $addvalue); “;
$addvalue_ary = explode(‘,’, $addvalue);
//因为DEDE是将所有表单数据提交过来,所以这里需要分隔一下。
$addvar_ary = array(
0 => ‘客户姓名’,
1 => ‘联系电话’,
2 => ‘邮箱’,
3 => ‘留言内容’,
);
$text = ”;
foreach($addvar_ary as $key=>$value)
{
$text.=$value.’: ‘.$addvalue_ary[$key].'<br>’;
}
$mailmy = ‘1166545@qq.com’;
$mailtitle = “道成网站留言”;
$mailbody = $text;
$headers = $cfg_adminemail;
$mailtype = ‘HTML’;
require_once(DEDEINC.’/mail.class.php’);//注意这里要载入mail类
$smtp = new smtp($cfg_smtp_server,$cfg_smtp_port,true,$cfg_smtp_usermail,$cfg_smtp_password);
$smtp->debug = false;
$smtp->sendmail($mailmy,$cfg_webname ,$cfg_smtp_usermail, $mailtitle, $mailbody, $mailtype);
        if($dsql->ExecuteNoneQuery($query))
        {
            $id = $dsql->GetLastID();
            if($diy->public == 2)
            {
                //diy.php?action=view&diyid={$diy->diyid}&id=$id
                $goto = “diy.php?action=list&diyid={$diy->diyid}”;
                $bkmsg = ‘发布成功,现在转向表单列表页…’;
            }
            else
            {
                $goto = !empty($cfg_cmspath) ? $cfg_cmspath : ‘/’;
                $bkmsg = ‘发布成功,请等待管理员处理…’;
            }
            showmsg($bkmsg, $goto);
        }
    }
}
/*—————————-
function list(){ }
—————————*/
else if($action == ‘list’)
{
    if(empty($diy->public))
    {
        showMsg(‘后台关闭前台浏览’, ‘javascript:;’);
        exit();
    }
    include_once DEDEINC.’/datalistcp.class.php’;
    if($diy->public == 2)
        $query = “SELECT * FROM `{$diy->table}` ORDER BY id DESC”;
    else
        $query = “SELECT * FROM `{$diy->table}` WHERE ifcheck=1 ORDER BY id DESC”;
    $datalist = new DataListCP();
    $datalist->pageSize = 10;
    $datalist->SetParameter(‘action’, ‘list’);
    $datalist->SetParameter(‘diyid’, $diyid);
    $datalist->SetTemplate(DEDEINC.”/../templets/plus/{$diy->listTemplate}”);
    $datalist->SetSource($query);
    $fieldlist = $diy->getFieldList();
    $datalist->Display();
}
else if($action == ‘view’)
{
    if(empty($diy->public))
    {
        showMsg(‘后台关闭前台浏览’ , ‘javascript:;’);
        exit();
    }
    if(empty($id))
    {
        showMsg(‘非法操作!未指定id’, ‘javascript:;’);
        exit();
    }
    if($diy->public == 2)
    {
        $query = “SELECT * FROM {$diy->table} WHERE id=’$id’ “;
    }
    else
    {
        $query = “SELECT * FROM {$diy->table} WHERE id=’$id’ AND ifcheck=1”;
    }
    $row = $dsql->GetOne($query);
    if(!is_array($row))
    {
        showmsg(‘你访问的记录不存在或未经审核’, ‘-1’);
        exit();
    }
    $fieldlist = $diy->getFieldList();
    include DEDEROOT.”/templets/plus/{$diy->viewTemplate}”;
}

此方式的好处是:邮件可以发送到指定的多个邮箱

发表评论

电子邮件地址不会被公开。 必填项已用*标注