phpcms 表单发有邮件
邮件配置说明
第一步:去企业邮箱申请,开启了smtp服务器,或者使用16 3邮 箱
16 3邮 箱默认开启了smtp服务器,可直接登录phpcms后台设置smtp验证,设置163邮箱smtp验证的详细参数
在服务器默认不开通25端口的情况下 ,配置邮件发送会失败
下面是配置成功的案例
备注:
如果本地测试成功,服务器上测试失败,可能是服务器配置禁用fsockopen函数的原因
通过phpinfo查看disable_functions项是否有fsockopen,如果有,说明就是这个问题。
解决办法:
打开:phpcms\modules\member\classes\client.class.php,
把78行的: if(!
f
p
=
f
s
o
c
k
o
p
e
n
(
fp = fsockopen(
fp=fsockopen(mail[‘server’], $mail[‘port’], $errno, KaTeX parse error: Expected '}', got 'EOF' at end of input: … 改为: if(!fp = pfsockopen($mail[‘server’], $mail[‘port’], $errno, $errstr, 30)) {
即把fsockopen改为pfsockopen。
添加表单,提交自动发送邮件提醒 :
修改 phpcms\modules\formguide index.php
找到
foreach ($mails as $m) {
sendmail($m, L('tips'), $this->M['mailmessage']);
}
替换成
// 增加邮件内容附带表单详情 段落1 开始
$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 />';
}
// 增加邮件内容附带表单详情 段落1 结束
foreach ($mails as $m) {
// 增加邮件内容附带表单详情 段落2 开始
sendmail($m, $MailSubject, $MailBody.$this->M['mailmessage']);
// 增加邮件内容附带表单详情 段落2 结束
}
- PS:有些主机商禁用fsockopen函数功能,为了防止黑客利用程序漏洞注入后使用 fsockopen 进行PHPDDOS 攻击。
fsockopen函数与pfsockopen函数,区别在于 pfsockopen 保持 keep-alive,使得黑客无法进行 连接数攻击。
如果配置出现问题:
可以联系:1186458795