你是否也遇到过网站留言几个月才看到,针对于这一问题,我们把原有的DTcms留言插件升级一下,加入邮件通知功能,当有人留言时,系统自动发送封邮件到您常用的邮箱或者发送手机短信。
现在我们开始改造工程吧:
1、首先第一步,添加config目录

2、在config目录下添加一个名为“install.config”的配置文件,添加如下代码
<?xml version="1.0"?> <install xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <bookmsg>2</bookmsg> <booktemplet>wordsmsg</booktemplet> <receive>850194007@qq.com</receive> </install>
3、在model.cs文件中添加配置文件模型。
[Serializable]
public partial class install
{
public install()
{ }
private int _bookmsg = 0;
private string _booktemplet = "";
private string _receive = "";
/// <summary>
/// 通知
/// </summary>
public int bookmsg
{
set { _bookmsg = value; }
get { return _bookmsg; }
}
/// <summary>
/// 通知模板别名
/// </summary>
public string booktemplet
{
set { _booktemplet = value; }
get { return _booktemplet; }
}
/// <summary>
/// 接收邮箱或手机
/// </summary>
public string receive
{
set { _receive = value; }
get { return _receive; }
}
}
4、在dal.cs文件中添加配置文件操作方法。
/// <summary>
/// 数据访问类:配置文件
/// </summary>
public partial class install
{
private static object lockHelper = new object();
public install()
{
}
#region 扩展设置参数
/// <summary>
/// 读取站点配置文件
/// </summary>
public Model.install loadConfig(string configFilePath)
{
return (Model.install)SerializationHelper.Load(typeof(Model.install), configFilePath);
}
/// <summary>
/// 写入站点配置文件
/// </summary>
public Model.install saveConifg(Model.install model, string configFilePath)
{
lock (lockHelper)
{
SerializationHelper.Save(model, configFilePath);
}
return model;
}
#endregion
}
5、在bll.cs文件中添加以下方法。
/// <summary>
/// 配置文件
/// </summary>
public partial class install
{
private readonly DAL.install dal;
public install()
{
dal = new DAL.install();
}
/// <summary>
/// 读取配置文件
/// </summary>
public Model.install loadConfig(string config_path)
{
string cacheName = "gs_cache_feedback_config";
Model.install model = CacheHelper.Get<Model.install>(cacheName);
if (model == null)
{
CacheHelper.Insert(cacheName, dal.loadConfig(Utils.GetMapPath(config_path)), Utils.GetMapPath(config_path));
model = CacheHelper.Get<Model.install>(cacheName);
}
return model;
}
/// <summary>
/// 保存配置文件
/// </summary>
public Model.install saveConifg(Model.install model, string config_path)
{
return dal.saveConifg(model, Utils.GetMapPath(config_path));
}
}
6、在admin目录下添加install.aspx文件。用作管理操作界面;
7、修改“ajax.ashx”文件,在“feedback_add”方法中添加发送方法;在修改方法之前要预先读取配置文件
Model.install config = new BLL.install().loadConfig("../config/install.config");
8、修改“ajax.ashx”文件第89行,添加如下方法
//是否开启通知功能
if (config.bookmsg > 0 && config.receive !="")
{
switch (config.bookmsg)
{
case 1:
DTcms.Model.sms_template smsModel = new DTcms.BLL.sms_template().GetModel(config.booktemplet); //取得短信内容
if (smsModel != null)
{
//替换模板内容
string smstxt = smsModel.content;
smstxt = smstxt.Replace("{webname}", siteConfig.webname);
smstxt = smstxt.Replace("{webtel}", siteConfig.webtel);
smstxt = smstxt.Replace("{weburl}", siteConfig.weburl);
smstxt = smstxt.Replace("{username}", model.user_name);
smstxt = smstxt.Replace("{usertel}", model.user_tel);
smstxt = smstxt.Replace("{userqq}", model.user_qq);
smstxt = smstxt.Replace("{useremail}", model.user_email);
smstxt = smstxt.Replace("{usertitle}", model.title);
smstxt = smstxt.Replace("{usercontent}", model.content);
//发送短信
string tipMsg = string.Empty;
bool result = new DTcms.BLL.sms_message().Send(config.receive, smstxt, 1, out tipMsg);
if (!result)
{
//LogHelper.WriteLog("手机信息发送失败!");
}
}
break;
case 2:
//获得邮件内容
DTcms.Model.mail_template mailModel = new DTcms.BLL.mail_template().GetModel(config.booktemplet);
if (mailModel != null)
{
//替换模板内容
string titletxt = mailModel.maill_title;
string bodytxt = mailModel.content;
titletxt = titletxt.Replace("{webname}", siteConfig.webname);
titletxt = titletxt.Replace("{username}", model.user_name);
bodytxt = bodytxt.Replace("{webname}", siteConfig.webname);
bodytxt = bodytxt.Replace("{webtel}", siteConfig.webtel);
bodytxt = bodytxt.Replace("{weburl}", siteConfig.weburl);
bodytxt = bodytxt.Replace("{username}", model.user_name);
bodytxt = bodytxt.Replace("{usertel}", model.user_tel);
bodytxt = bodytxt.Replace("{userqq}", model.user_qq);
bodytxt = bodytxt.Replace("{useremail}", model.user_email);
bodytxt = bodytxt.Replace("{usertitle}", model.title);
bodytxt = bodytxt.Replace("{usercontent}", model.content);
//循环发送
string[] emailArr = config.receive.Split(',');
foreach (string email in emailArr)
{
if (DTcms.Common.Utils.IsValidEmail(email))
{
//发送邮件
try
{
DTMail.sendMail(siteConfig.emailsmtp, siteConfig.emailssl,
siteConfig.emailusername,
DESEncrypt.Decrypt(siteConfig.emailpassword, siteConfig.sysencryptstring),
siteConfig.emailnickname,
siteConfig.emailfrom,
email,
titletxt, bodytxt);
}
catch
{
//LogHelper.WriteLog("邮件发送失败!");
}
}
}
}
break;
}
}
这里提醒下,在会员设置出添加邮件模板,模板别名设置该模板的调用别名。提供该修改后源码下载,注意该源码其中引用了部分没有提供样式的css,根据自己的情况进行修改。

