dedecms织梦程序自定义表单发送邮箱,邮箱提醒方法

changhao  于 2015-5-6 14:45:42 回帖奖励 |阅读模式
3 3900
  用DeDeCMS做企业网站,经常会需要这样的功能,即:用户在网页上提交一个表单数据,可能是:在线订单或客户的联系资料,默认情况下,管理员只有登录后台才能看到提交表单数据,但是操作起来比较麻烦,那么,下面的代码就可以实现将表单数据自动发送到管理员邮箱的功能,这样就方便多了。

  打开根目录plus下面的diy.php文件:

  大概在85行找到代码:$query="INSERTINTO`{$diy->table}`(`id`,`ifcheck`$addvar)VALUES(NULL,0$addvalue);";

  在此代码后面开始加入代码:


  1. /*短信提醒*/
  2. $mailtitle = "填写可免费治疗表单";
  3. $mailbody = "性别:{$b_sex}\r\n年龄:{$b_age}\r\n姓名:{$b_name}\r\n电话:{$b_tell}\r\n扣扣:{$b_qq}\r\n病种:{$b_bz}\r\n发布时间:{$b_fbsj}\r\n是否进行过治疗:{$b_ynzl}\r\n选择医院侧重那一块:{$b_yycz}\r\n想要的治疗方法:{$b_hdff}\r\n治疗最关心的问题:{$b_gxwt}\r\n预约时间:{$b_yytime}";
  4. $headers = $cfg_adminemail;//用我们刚才设置的管理员邮箱发送
  5. $mailtype = 'TXT';//邮件类型为文本类型
  6. require_once(DEDEINC.'/mail.class.php');//加载织梦的邮件库
  7. $smtp = new smtp($cfg_smtp_server,$cfg_smtp_port,true,$cfg_smtp_usermail,$cfg_smtp_password);//创建smtp服务
  8. $smtp->debug = false;//不起用调试
  9. $smtp->sendmail($cfg_smtp_usermail,$cfg_webname ,$cfg_smtp_usermail, $mailtitle, $mailbody, $mailtype);//发送邮件
复制代码
  1. XML/HTML代码

  2. $mailtitle=$name."提交表单通知";
  3. $mailbody="称呼:{$name}rn邮箱:{$email}rn内容:{$message}";
  4. $headers=$cfg_adminemail;
  5. $mailtype='TXT';
  6. require_once(DEDEINC.'/mail.class.php');
  7. $smtp=newsmtp($cfg_smtp_server,$cfg_smtp_port,true,$cfg_smtp_usermail,$cfg_smtp_password);
  8. $smtp->debug=false;
  9. $smtp->sendmail($cfg_smtp_usermail,$cfg_webname,$cfg_smtp_usermail,$mailtitle,$mailbody
复制代码
后面一段是另外的写法,两个选一个,参考一下的。希望对各位有帮助。

| 0 人收藏
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
回复

使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    67

    主题

    79

    帖子

    93

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    93
    QQ
    发表于 2015-7-21 09:30:25 | 只看该作者
    沙发
    经过测试。代码没有问题,建议不要使用qq邮箱进行测试,用qq邮箱测试好久,提交表单都是白屏状态,更换网易163邮箱后,问题解决!
    回复 支持 反对

    使用道具 举报

    61

    主题

    69

    帖子

    69

    积分

    超级版主

    Rank: 8Rank: 8

    积分
    69
     楼主| 发表于 2015-11-14 15:56:10 | 只看该作者
    板凳
            $mailtitle = $name."手机版本预约提醒";
            $mailbody = "姓名:{$name}\r\n性别:{$sex}\r\n年龄:{$age}\r\n联系方式:{$tel}\r\n就诊时间:{$jzsj}\r\n提交时间:{$tjsj}";
            $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;
                    $cfg_smtp_usermail1 = "130517121@qq.com";
            $smtp->sendmail($cfg_smtp_usermail1,$cfg_webname ,$cfg_smtp_usermail, $mailtitle, $mailbody, $mailtype);
    回复 支持 反对

    使用道具 举报

    61

    主题

    69

    帖子

    69

    积分

    超级版主

    Rank: 8Rank: 8

    积分
    69
     楼主| 发表于 2020-9-16 22:17:40 | 只看该作者
    地板
    新方法如下

    1、环境要求
    • 主机465端口是开启和放行的
    • php扩展openssl是开启的
    • php扩展sockets是开启的
    • 虚拟主机必须开启fsockopen函数



    2、网站后台 - 系统 - 系统基本参数 - 核心设置
    • 是否启用SMTP方式发送邮件:是
    • SMTP服务器:ssl://smtp.163.com 或者 ssl://smtp.qq.com
    • SMTP服务器端口:465
    • SMTP服务器的用户邮箱:dedehtml@163.com 或者 858265175@qq.com
    • SMTP服务器的用户帐号:dedehtml 或者 858265175
    • SMTP服务器的用户密码:填你邮箱授权码,不是邮箱登录密码



    3、打开 /plus/diy.php 找到
    1. $id = $dsql->GetLastID();
    复制代码
    在它的下面加入
    1. $mailtitle = "{$diy->name}--留言通知";
    2. $mailbody = '';
    3. foreach($diy->getFieldList() as $field=>$fieldvalue)
    4. {
    5.         $mailbody .= "{$fieldvalue[0]}:{${$field}}\r\n";
    6. }
    7. $headers = "From: ".$cfg_adminemail."Reply-To: ".$cfg_adminemail;
    8. if($cfg_sendmail_bysmtp == 'Y' && !empty($cfg_smtp_server))
    9. {
    10.         $mailtype = 'TXT';
    11.         require_once(DEDEINC.'/mail.class.php');
    12.         $smtp = new smtp($cfg_smtp_server,$cfg_smtp_port,true,$cfg_smtp_usermail,$cfg_smtp_password);
    13.         $smtp->debug = 0;//发送不成功把0改成1,再提交看错误信息
    14.         $smtp->sendmail($cfg_shoujianren,$cfg_webname ,$cfg_smtp_usermail, $mailtitle, $mailbody, $mailtype);
    15. }
    16. else
    17. {
    18.         @mail($cfg_shoujianren, $mailtitle, $mailbody, $headers);
    19. }
    复制代码
    至此自定义表单发送邮件通知管理者完成
    如果提交表单后收不到邮件,把上面代码$smtp->debug = 0;改成$smtp->debug = 1;
    然后再重新提交表单,看提示信息提示什么。

    Trying to ssl://smtp的解决方法
    如果用ssl:// 和 465端口发送失败,提示 Trying to ssl://smtp.xx.com 话,很大可能是主机禁用了465端口,这时候可以切换回25端口和去掉ssl://
    网易企业邮乱码的解决方法
    打开 /plus/diy.php 找到
    $headers = "From: ".$cfg_adminemail."Reply-To: ".$cfg_adminemail;复制
    • 1

    在它下面加入一行
    $mailbody = mb_convert_encoding($mailbody, "GBK", "UTF-8");复制
    • 1

    完成

    回复 支持 反对

    使用道具 举报

    • 售后服务
    • 关注我们
    • 社区新手

    QQ|Archiver|手机版|小黑屋|德高网络.  

    Powered by Discuz! X3.2  © 2001-2018 Comsenz Inc.