|
主题: 还差那么一点点,快成功了……
|
楚楚
职务:普通成员
等级:1
金币:1.0
发贴:187
|
#12003/10/25 8:51:21
高手,请帮我一把。 这个“找回密码”的程序,已经困扰我很长时间了。 下面这段红色代码,发信是没问题的,测试一切顺利。 <% '====================================================================================== Dim ForUser, FromUser, ForUserEmail, FromUserEmail, SmtpServer Dim emailTit, emailTxt, FromUserID, FromUserIDPW emailTit = Request.Form("emailTit") '从表单获取email的标题 emailTxt = Request.Form("emailTxt") '从表单获取邮件的内容 emailTxt = emailTxt & "
久久家园 "
'==========================以下代码是判断服务器是否支持JMAIL组件 Function IsObjInstalled(strClassString) On Error Resume Next IsObjInstalled = False Err = 0 Dim xTestObj Set xTestObj = Server.CreateObject(strClassString) If 0 = Err Then IsObjInstalled = True Set xTestObj = Nothing Err = 0 End Function if not IsObjInstalled("JMail.Message") then Response.write"你所使用的服务器不支持邮件发送!" Response.End end if '========================================================== if Trim(Request.Form("action")) = "确定发送" then SmtpServer = "mail.123.net" FromUserEmail = "123@123.net" FromUser = "我的网站" ForUserEmail = Request.Form("ForUserEmail") Dim JMail Set JMail=Server.CreateObject("JMail.Message") JMail.Logging=True JMail.Charset="gb2312" JMail.ContentType = "text/html" JMail.AddHeader "Originating-IP", Request.ServerVariables("REMOTE_ADDR") 'if Request.Form("smtpPW") = "1" then '判断服务器是否需要身份验证 JMail.MailServerUserName = "123r@123.net" JMail.MailServerPassword = "123456" 'end if JMail.From = FromUserEmail '发件人的信箱 JMail.FromName = FromUser '发件人的名字 JMail.Subject = emailTit '邮件的主题 JMail.Body = emailTxt '邮件的内容 '==============================收件人的地址! JMail.AddRecipient(ForUserEmail) '收件人的地址 JMail.Priority=5 '邮件级别1-5数字越大级别越高---3为普通邮件 JMail.AppendBodyFromFile(Server.MapPath("Mailend.txt")) JMail.Send(smtpServer) JMail.Close Set JMail=nothing if err then err.clear Response.Write " 发信功能已经打开,但因服务器不支持发信或者信箱地址错误,导致信件无法发出!" Response.End else Response.Write " 信件已经发出!" Response.End end if end if %> 现在的主要问题是,怎样让Jmali提取数据库的用户名、信箱,然后发送。下面这段蓝色代码,是原始的发送程序代码,他的程序应该没问题,但可能由于JMail.SMTPMail不支持服务器验证,无法发送邮件。 我设想:可不可以用上面的能够正常发信的红色代码,来替换这段蓝色代码。 哪位热心的高手帮我解决一下,感激不尽呀。 解决了这个问题,应该是造福人类了。 我想很多朋友一定都有我这样的Jmail困惑。 要知道,找回密码的功能,是相当重要的。而,要真正实现,好难啊。 <% function SendMail(mailto,subject,msg) dim JMail 'on error resume next Set JMail = Server.CreateObject("JMail.SMTPMail") JMail.LazySend = true JMail.silent = true JMail.Charset = "gb2312" JMail.ContentType = "text/plain" JMail.Sender = "bluepointnet@msn.com" JMail.ReplyTo = "bluepointnet@msn.com" JMail.SenderName = "零点娱乐交友俱乐部" JMail.Subject = subject JMail.SimpleLayout = true JMail.Body = msg JMail.Priority = 1 JMail.AppendBodyFromFile(Server.MapPath("Inc/Mailend.txt")) JMail.AddRecipient mailto JMail.AddHeader "Originating-IP", Request.ServerVariables("REMOTE_ADDR") SendMail = JMail.Execute() JMail.Close set JMail=nothing call RecordLog(mailto,subject,msg) end function
function NeedMail(MType,ToID,subject,msg) dim Rs,sql,Rss set Rs=server.createobject("adodb.recordset") sql="select email from user_reg where user_id=" & ToID Rs.open sql,conn,1,1 If Not Rs.Eof Then set Rss=server.createobject("adodb.recordset") sql="select * from user_option where user_id=" & Cint(ToID) Rss.open sql,conn,1,1 If Not Rss.Eof Then TType=Rss(MType) Else TType=True End If Rss.Close set Rss=Nothing If TType=True Then If Rs("email")<>"" Then call SendMail(Rs("email"),subject,msg) End If End If End If Rs.Close end function
function RecordLog(mailto,subject,msg) Dim LogFileName,FileObject,Out LogFileName=Server.MapPath("mdb/maillog.txt") Set FileObject=Server.CreateObject("SCRIPTING.FILESYSTEMOBJECT") Set Out=FileObject.OpenTextFile(LogFileName,8,True) Out.WriteLine("Time : " & Now()) Out.WriteLine("MailTo : " & mailto) Out.WriteLine("Subject : " & subject) Out.WriteLine("Contents : ") Out.WriteLine(msg) Out.WriteLine("----------") Out.WriteLine() Out.Close end function %>下面是找回密码的最后一步的代码,包含文件jmail要在这一步发送。
<% dim conn,DBPath dim rs_lar dim sql dim user_name,answer
'叛断Session变量是否超时 if isempty(session("u_id")) then 'response.redirect "timeout.asp" end if
if session("u_id")<>1 then response.redirect "havereg.asp" end if
user_name =left(request("user_name"),10) answer=request("answer")
'----------------------------------------------------------------- Set conn = Server.CreateObject("ADODB.Connection") DBPath = Server.MapPath("date.mdb") conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath '----------------------------------------------------------------- Set rs_lar = Server.CreateObject("ADODB.Recordset") sql="select * from user_reg where user_name like '" & user_name & "'and answer like '" & answer & "'" rs_lar.open sql,conn,3,2
%>
找回忘记的密码 |
<%if rs_lar.eof and rs_lar.eof then%> 对不起!您的回答不对,不能得到密码!请你好好想想吧 <%else MailContents=rs_lar("user_name") & ",您好!" & chr(13) & chr(13) & "恭喜你成功找回了登陆密码,以下是您的注册信息:" & chr(13) & chr(13) & "用户名:" & rs_lar("user_name") & chr(13) & "密码:" & Decode(rs_lar("password")) & chr(13) & "忘记密码时回答问题:" & rs_lar("question") & chr(13) & "答案:" & rs_lar("answer") & chr(13) & chr(13) & "这回可要记牢了呀!" call SendMail(rs_lar("email"),"恭喜您成功找回了密码",MailContents) %> <%=rs_lar("user_name")%>,恭喜你,你的密码找到了! 已经发到您的注册信箱中了,请查收您的邮箱。
现在登陆 返回首页 <% end if %> | |
<% rs_lar.close set conn=nothing set rs_lar=nothing %>
|
null
职务:普通成员
等级:1
金币:0.0
发贴:15
|
#22003/10/25 9:31:05
楚楚在上个帖子中说 引用: 高手,请帮我一把。
现在的主要问题是,怎样让Jmali提取数据库的用户名、信箱,然后发送。
什么叫 用jmail 提取数据库的用户名? 红色的发信部分不要动,改成一个function,然后在发信的时候,用name查询到信箱和密码, 作为参数,调用sendmail啊……
|
楚楚
职务:普通成员
等级:1
金币:1.0
发贴:187
|
#32003/10/25 10:16:25
null在上个帖子中说 引用: 什么叫 用jmail 提取数据库的用户名? 红色的发信部分不要动,改成一个function,然后在发信的时候,用name查询到信箱和密码,作为参数,调用sendmail啊……
您这一句,要怎么做呀? 改成一个function,怎么改呀? 帮我一下好吗?谢谢。 实在急急急急……
|
楚楚
职务:普通成员
等级:1
金币:1.0
发贴:187
|
#42003/10/25 11:38:58
我已经做好。 谢谢帮助。
|