博客添加“回复留言评论时发送邮件提醒”功能For ASblog

ps.代码更新于 2011年1月21日 9:14

前段时间在ifu25网站留言或评论后,总能收到博主的回复邮件,感觉这是个很不错的功能!结合自己的一些经验考虑,在访问别人的网站时,80%是 搜索引擎引导过去的,除非是非常不错的易记的域名,大多都无法再次回访,至于在其网站上的留言或评论也都无法去查看博主的回复了,很是郁闷!

现在看到这个邮件提醒功能,于是就很想给自己的网站也加上这个。就去看了一下Zblog的相关插件,感觉写的很不错,于是拿来做了部分修改,去掉多 余的添加需要的功能后,添加了一个回复时是否发送邮件的开关:IsEmail="1",然后在前台和数据库中也添加了留言评论时可选填Email这一项, 于是本站就顺利开通了回复留言评论时对来访者发送提醒邮件,这样即使别人记不住域名,也能回访,很不错哦!

最后谢谢ifu25发送的邮件的提示以及zblog提醒邮件的插件制作者!你们都是好样的哈哈!

分享一下我的这个功能主要应用的代码,将下列代码保存为send_comm_email.asp放在根目录下,并在Ajax.asp文件中包含此文件:

<%
' ============================================
' 调用方法:sendEmail(Title,MSG,USER,url)
' 有新评论、留言时发送邮件提醒站长
' ============================================
Const Send_Charset = "GB2312"   '邮件的文字编码
Const Send_MailServerName = "smtp.qq.com"
Const Send_MailServerUserName = "web@nuodou.com"  '登录邮件服务器所需的用户名
Const Send_MailServerUserPwd = "******"          '登录邮件服务器所需的密码
Const Send_MailFromAddress = "web@nuodou.com"    '发件人的E-MAIL地址
Const Send_MailFromName = "诺豆网站长提醒"    '发件人的姓名
Const Send_MailServerAlternate = ""  '备用发信服务器
Dim Title,MSG,USER,url,Email_Body,RecEmail
RecEmail = "web@nuodou.com"  '收件人Email地址
Function SendEmail(Title,MSG,USER,url)
'标题,内容,发表者,日志URL
On Error Resume Next
'===========定义回复邮件内容的样式  开始===========
' Email_Body = "请根据自己的需要自制样式"
Email_Body = "一条"& Title & "<br/>大名: "& USER & "<br/><br/>内容: " & MSG & "<br/><br/><a href="""&url&""">点此查看详细信息</a><br/><br/>时间: " & Now()
'===========定义回复邮件内容的样式  结束===========
Dim jmail
Set jmail = Server.CreateObject("JMAIL.Message") '建立发送邮件的对象
jmail.Clear()
'jmail.Logging = True '记录发送日志
jmail.silent  = True  '屏蔽例外错误,返回FALSE跟TRUE两值
jmail.Charset = Send_Charset '邮件的文字编码为国标
jmail.ContentType = "text/html" '邮件的格式为纯文本, 如text/html则为html格式,此时若有附件,则附件会出现乱码,解决办法是删除此句
If LCase(strToAddress)<>"null" Then jmail.AddRecipient RecEmail  '邮件收件人的地址
jmail.From     = Send_MailFromAddress     '发件人的E-MAIL地址
jmail.FromName = Send_MailFromName        '发件人的姓名
jmail.ReplyTo  = RecEmail             '回复地址
jmail.MailServerUserName = Send_MailServerUserName '登录邮件服务器所需的用户名
jmail.MailServerPassword = Send_MailServerUserPwd  '登录邮件服务器所需的密码
JMail.Subject = "A New Massage From NuoDou Blog" '邮件的标题
JMail.HTMLBody = Email_Body   '邮件的内容
jmail.Priority = 3 '邮件的紧急程序,1 为最快,5 为最慢, 3 为默认值
jmail.Send(Send_MailServerName)  '执行邮件发送(通过邮件服务器地址)
jmail.Close() '关闭对象
Set jmail=Nothing
Err.Clear
End Function
%>

后记:诺豆网已经加入了wordpress家族,仍有ASblog的童鞋需要这段代码的使用方法,整理一下分享给大家吧!

首先找到Ajax.asp文件的函数 SaveComment(),对比查看此函数末尾的如下几段代码:

Response.Write(SaveCommentMsg)
Response.End
End Sub

将新评论发送邮件提示的调用函数加入进来,修改如下:

Response.Write(SaveCommentMsg)
'===== 发送邮件提醒 begin =====
If Part = "1" then
SendEmail "新评论",CommentContent,CommentAuthor,"http://yangjunwei.com/"&FromID&".html#comment"   '发送新评论邮件提醒
End if
'===== 发送邮件提醒 end =====
Response.End
End Sub

记住一定是加在 response.end之前,否则可能造成发送邮件失败并占用很大的内存而假死!

最后,同样原理,可在后台回复评论的时候做相应的调用来实现回复评论时,发送邮件至评论者所填写的邮箱,主要涉及后台管理目录的Manage_Comment.asp文件中的 SaveEdit() 函数。