实现PHPCMS里提交表单发送邮件功能
使用phpcms自带的邮件发送功能实现前台页面表单提交时发送邮件
1、首先在phpcms后台找到邮箱配置
2、修改相关配置信息。
我这里建议使用163的邮件服务器,因为我刚开始用的就是QQ,但是不好用。
记得如果使用163,那么邮件服务器要使用ssl加密模式,端口号是994
发件人就是注册的163账号,验证用户名和发件人一样,验证密码就是授权码。
点击邮件设置测试,如果邮箱收到邮件,那么表示成功了
3、在后台设置->模块->表单向导添加接收邮件,即可实现前台表单提交邮箱收到邮件功能
依照下图设置即可
4、一般情况下这个时候收到的邮件都是空白的,所以要去修改PHP代码
找到 /phpcms/modules/formguide/index.php
找到 foreach ($mails as $m) { sendmail($m, L('tips'), $this->M['mailmessage']); } 替换为
$f_info = $this->db->get_one(array('modelid'=>$formid, 'siteid'=>$this->siteid)); $MailSubject = '用户提交表单['.$f_info['name'].']提醒'; $Fields = getcache('formguide_field_'.$formid, 'model'); $Fields['username']['name'] = '用户名'; $Fields['datetime']['name'] = '提交时间'; $Fields['ip']['name'] = '提交IP'; unset($data['userid'], $data['datetime']); foreach($data as $k=>$v){ $MailBody .= $Fields[$k]['name'].' :'.$v.'<br />'; } foreach ($mails as $m) { sendmail($m, $MailSubject, $MailBody.$this->M['mailmessage']); }
当然最后也许自己想要的字段并没有,那就需要在表单向导里面加字段,然后在前台使用input[hidden]隐藏。这个自己去参照着源码修改
最后在手机端提交的时间是标准时间,所以要修改一下。
// 联系我们的留言 $(".linkForm").click(function(){ let date = new Date(); let year = date.getFullYear(); let month = date.getMonth() + 1; let date2 = date.getDate(); let hours = date.getHours(); let seconds = date.getSeconds(); let minutes = date.getMinutes(); let time = JSON.stringify(year + '-' + month + '-' + date2 + ' ' + hours + ':' + minutes + ':' + seconds); $(".formLink").val(window.location.href) $(".formTime").val(time) })