记录一些常用的函数和瞎折腾的过程……

帝国cms管理员回复留言后发通邮件知用户

帝国cms默认是不支持管理员回复用户进行邮件通知的。其实我们小小的改造一下就可以支持了。不过也需要满足一些条件,具体如下:

1、php需要的openssl的extension,并且在php.ini中开启此extension,也需要开启fsockopen函数;

2、有一个能使用smtp功能的邮箱;

满足上述2个条件后,就可以在后台系统参数设置SMTP参数了。

如果是使用25端口发送邮件,填好参数就可以正常使用;但如果使用465端口,启用了ssl,就需要修改一个文件,如果启用ssl,则要修改e\class\class.smtp.php,在大约第62行(帝国cms7.5版本)的$host前添加"ssl://",即修改为: "ssl://".$host。

如果一切正常,就可以正常发送邮件,先来个测试看一下:

在e文件夹下新建一个send_mail.php文件,输入以下代码(记得修改下面中邮件接收者的E-mail):

<?php
require('class/connect.php');
require('class/db_sql.php');
$link=db_connect();
$empire=new mysqlquery();
echo "send start <br />";
include('class/SendEmail.inc.php');
$mail_test="xxx@qq.com";//邮件接收者的E-mail
$sm=EcmsToSendMail($mail_test, "邮件测试", "这是一个测试邮件!");
echo $mail_test." send over <br />";
db_close();
$empire=null;
?>

在浏览器中输入"http://网址/e/send_mail.php",如果能收到邮件,就说明smtp服务正常了。

下面来修改2个文件,用来完成一个功能:当管理员回复用户留言时,通过邮件通知用户。

1、打开e/admin/tool/ReGook.php文件

大约在43处,增加两行代码,用来获取用户信息:

<input id="email" name="email" type="hidden" value="&lt;?=$r[email]?&gt;" /><!--取用户EMIAL地址-->
<input id="lytext" name="lytext" type="hidden" value="&lt;?=$r[lytext]?&gt;" /><!--取用户留言信息-->

大约在71行,继续增加是否通知用户的选项:

<tr bgcolor="#FFFFFF">
  <td height="25">邮件通知:</td>
  <td height="25">
    <input name="checked[]" type="checkbox" id="checked[]" value="" title="发Emial通知" style="background:#99C4E3">
    <span style="color:red">是否邮件通知到: <?=$r[email]?> </span>
  </td>
</tr>

2、打开e/admin/tool/gbook.php文件:

增加一行,调用smtp函数功能:

include("../../class/SendEmail.inc.php");

然后将以下代码:

elseif($enews=="ReGbook")
{
  $lyid=$_POST['lyid'];
  $bid=$_POST['bid'];
  $retext=$_POST['retext'];
  ReGbook($lyid,$retext,$bid,$logininid,$loginin);
}

修改为:

elseif($enews=="ReGbook")
{
  $lyid=$_POST['lyid'];
  $bid=$_POST['bid'];
  $retext=$_POST['retext'];
  $email=$_POST['email'];
  $lytext=$_POST['lytext'];
  $checked=(int)$_POST['checked'];
  $mailtitle = "您在XX上的留言有了回复!";//构造邮件主题
  $mailbody = "<span style='color:red'>您在XX上的留言:</span><br />".$lytext."<br><br><span style='color:red'>启梦语言康复中心的回复 :</span><br />".$retext;//构造邮件内容
  if($checked)//发送
  {
    EcmsToSendMail($email,$mailtitle,$mailbody);
  }
  ReGbook($lyid,$retext,$bid,$logininid,$loginin);
}

好了,到此为止改造基本就完成了。

《帝国cms管理员回复留言后发通邮件知用户》没有评论
发表评论