织梦cms自带的自定义表单其实是一个很不错的功能,通过自定义表单,我们可以获取到客户的留言信息甚至是联系方式,但缺点就在于没有提醒功能,想要查收留言只能通过登录后台。为及时查收用户留言信息,那么配置一个右键提醒功能就显得很有必要了。
本文白天将详细给大家介绍一下为织梦cms自定义表单配置邮件提醒的方法,将用户的留言信息及时发送至我们的邮箱,以便于查收。
注:本文以配置qq邮箱为例,其他邮箱配置方法一致,国内主流邮箱都支持,如qq邮箱、163邮箱等。
1、环境要求
- 服务器安全组开启和放行465端口;
- php扩展开启openssl、sockets;
- 虚拟主机必须开启fsockopen函数;
如下图,本地环境phpstudy开启这2个扩展
阿里云虚拟主机开启fsockopen函数:
2、qq邮箱开启SMTP服务并获取授权码
如下图所示,登录qq邮箱后台 > 设置 > 账户 > 开启POP3/SMTP以及IMAP/SMTP服务,开启后点击下方提示信息中的“生成授权码”,生成后保存授权码到本地备用。
3、网站后台设置邮件发送相关信息
登录网站后台,在系统 > 系统基本参数 > 核心设置中,配置以下信息:
- 是否启用SMTP方式发送邮件:是
- SMTP服务器:ssl://smtp.163.com 或者 ssl://smtp.qq.com
- SMTP服务器端口:465
- SMTP服务器的用户邮箱:xxx@163.com 或者 xxx@qq.com
- SMTP服务器的用户帐号:xxx 或者 admin
- SMTP服务器的用户密码:填你邮箱授权码,不是邮箱登录密码
如下图所示:
4、网站后台 – 系统 – 系统基本参数 – 添加新变量
5、 在/plus/diy.php找到:
$id = $dsql->GetLastID();
在其下方加入代码:
$mailtitle = "{$diy->name}--留言通知"; $mailbody = ''; foreach($diy->getFieldList() as $field=>$fieldvalue) { $mailbody .= "{$fieldvalue[0]}:{${$field}}\r\n"; } $headers = "From: ".$cfg_adminemail."Reply-To: ".$cfg_adminemail; if($cfg_sendmail_bysmtp == 'Y' && !empty($cfg_smtp_server)) { $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 = 0;//发送不成功把0改成1,再提交看错误信息 $smtp->sendmail($cfg_shoujianren,$cfg_webname ,$cfg_smtp_usermail, $mailtitle, $mailbody, $mailtype); } else { @mail($cfg_shoujianren, $mailtitle, $mailbody, $headers); }
至此自定义表单发送邮件的功能就完成了。
如果提交表单后收不到邮件,把上面代码$smtp->debug = 0;
改成$smtp->debug = 1;
然后再重新提交表单,看提示信息提示什么。
注:
1、如果用ssl:// 和 465端口发送失败,提示 Trying to ssl://smtp.xx.com 话,很大可能是服务器安全组规则未开启465端口或者防火墙未放行465端口。
2、如果收到的提醒短信乱码,可以在打开 /plus/diy.php中找到:
$headers = "From: ".$cfg_adminemail."Reply-To: ".$cfg_adminemail;
在它的下方加入:
$mailbody = mb_convert_encoding($mailbody, "GBK", "UTF-8");
即可。
3.以上所述方法只用于单个邮箱提醒。
原创文章,作者:白天,如若转载请注明出处:织梦cms自定义表单配置邮件提醒(发送)功能
评论列表(4条)
能用,有其他办法实现通知多个邮箱吗
这个邮件功能必须好好研究了