|
<font color="red">首先、如果你没有服务器,并且你没有太大兴趣的话可以不用浪费时间往下看!其次、如果你有钱,就让鬼帮你来看,也不用浪费你的时间。再次、如果你并不想架什么邮局也别浪费时间看。</font><br>
<br>
<br>
<b>用Imail架设类似163的个人邮件服务器的解决方案</b><br>
<br>
如今是一个互联网的时代,已经越来越多个人或公司都购买了属于自己的服务器托管到各种机房去,或提供公司内部使用的WEB或邮件服务,或从事虚拟主机服务行业,笔者瞎赶潮流弄了一台玩。<br>
<br>
反正服务器闲着也是闲着,就打算开一个免费邮局,要钱的邮件服务器咱买不起,IMAIL口碑算是不花钱的邮件服务器中非常不错的,就选它吧。看着IMAIL的WEBMAIL实在不咱地,就自己写了一套界面模板,居然还卖了几个小钱,暗自欣喜,不过问题又来WEBMAIL不提供在线注册功能啊!<br>
<br>
于是上网找资料,看到有别人提供在线注册模块的文章,于是研究了一下,就用ASP写了一个在线注册模块(代码附后),不过很不爽的是,这种在线注册模块必须要求数据库要使用外部数据库,例如SQLSERVER/ACCESS,提到这里相信大家都明白为什么我轻松就写出了在线注册模块,其实不就是网数据库里插记录吗?用ASP小意思了嘛!<br>
<br>
一次偶然机会,有一个用户问我,为什么我们提供的在线注册模块只能用外部数据库,一则安全问题不能保障,一则速度受到极大影响,问我们能否提供使用IMAIL系统数据库(即注册表)也能支持在线注册的功能。<br>
<br>
于是萌发了开发一个基于系统数据库的在线注册组件。<br>
<br>
由于目前还没有这种先例,作为首创,我在开发过程中遇到许许多多问题,首先就是组件操作注册表问题,然后就是IMAIL用户密码的加密解密问题,最后是服务器执行权限及配置……经过半个月多的努力,总算把这个在线注册组件完成了——Tuoboo Imail Register<br>
<br>
我终于如愿以尝地用IMAIL架设了一个个人免费邮局,供大家免费申请使用。即时申请、立刻开通使用。<br>
<br>
软件:Imail 8.21 + Tuoboo Imail Register + 2003server<br>
<br>
附数据库版ASP在线注册组件代码<br>
<br>
<%<br>
dim conn<br>
dim Max,Min,userfield,userdir,usertable<br>
Max = 0<br>
Min = 0<br>
userfield = "@tuoboo.net"<br>
userdir = "c:\Program Files\Ipswitch\Collaboration Suite\IMail\tuoboo_com\users\"<br>
usertable = "ImailUser"<br>
if request.form("post") = "立刻注册" then<br>
dim userid,password<br>
if request.form("accept") <> "ON" then<br>response.write "<script>alert('您必须无条件接受我们的服务条款才被允许免费申请企业信箱!');history.go(-1);</script>"<br>response.end<br>
end if<br>
userid = trim(replace(request.form("userid"),"'",""))<br>
password = trim(replace(request.form("passwd"),"'",""))<br>
if len(userid) > 16 or len(userid)<3 then<br>response.write "<script>alert('帐号长度范围是3-16!');history.go(-1);</script>"<br>response.end<br>
end if<br>
if len(password) > 16 or len(password)<3 then<br>response.write "<script>alert('密码长度范围是3-16!');history.go(-1);</script>"<br>response.end<br>
end if<br>
if password <> trim(request.form("passwdd")) then<br>response.write "<script>alert('两次输入密码不一致!');history.go(-1);</script>"<br>response.end<br>
end if<br>
Set Conn = Server.CreateObject ("ADODB.Connection")<br>
Conn.Open "ImailDb"<br>
RegisterNewUser<br>
conn.close<br>
end if<br>
Sub RegisterNewUser()<br>
err.clear<br>
conn.begintrans<br>
set rs = conn.execute("select userid from "&usertable&" where userid = '"&userid&"'")<br>
if not rs.eof and not rs.bof then<br>response.write "<script>alert('此用户已经被注册!请更换一个帐号注册!');history.go(-1);</script>"<br>exit sub<br>
end if<br>
set rs=server.CreateObject("adodb.recordset")<br>
sql = "select * from "&usertable&" where (userid is null)"<br>
rs.open sql,conn,1,3<br>
rs.addnew<br>
rs("USERID") = userid<br>
rs("PASSWORD") = password<br>
rs("FULLNAME") = userid<br>
rs("USERDIR") = userdir&userid<br>
rs("MAILADDR") = userid&userfield <br>
rs("MAXSIZE") = Max '- integer..............最大邮件大小 <br>
rs("MAXMSGS") = Min '- integer..............最大消息大小 <br>
rs("FLAGS") = 128 '- integer <br>
rs("TYPE") = 0 '- integer <br>
rs("NUMTRIES") = 0 '- integer <br>
rs("ATTEMPTTIME") = 0 '- integer <br>
rs("NUMTIMESSUSP") = 0 '- integer <br>
rs("LASTLOGIN") = 0 '- integer <br>
rs("SPNDUSRACCT") = 0 '- integer <br>
rs("ICALENBL") = -1'- integer <br>
rs("SPELLENBL") = -1 '- integer <br>
rs("NUMSGSTNS") = 4 '- integer <br>
rs("IWDEPTH") = -1'- integer <br>
rs("IWOPTIONS") = 0' - integer <br>
rs("SPELLCHKG") = -1' - integer <br>
rs("PRVWSIZE") = -1' - integer <br>
rs("STRTDAY") = -1' - integer <br>
rs("ENTRYGRNL") = -1' - integer <br>
rs("STARTTIME") = -1' - integer <br>
rs("ENDTIME") = -1' - integer <br>
rs("MAXEVNTDISP") = -1' - integer <br>
rs("MAXTSKDISP") = -1' - integer <br>
rs("MAXNOTEDISP") = -1' - integer <br>
rs("MAXDLYRCURCNT") = -1' - integer <br>
rs("MAXWKLYRCURCNT") = -1' - integer <br>
rs("MAXMONRCURCNT") = -1' - integer <br>
rs("MAXYRLYRCURCNT") = -1' - integer <br>
rs("DISPCMPLTDTSKS") = -1' - integer <br>
rs("HOURSCLOCK") = -1' - integer <br>
rs("MAXSRCHRESPPG") = -1' - integer <br>
rs("MAXEVENTTITLELEN") = -1' - integer <br>
rs("MAXTASKTITLELEN") = 0' - integer <br>
rs("CONFIRMONDELETE") = 0' - integer <br>
rs.update<br>
rs.close<br>
set rs = nothing<br>
if err.number <> 0 then<br>conn.rollbacktrans<br>response.write "<script>alert('意外错误,操作未能成功!');history.go(-1)</script>"<br>
else<br>conn.committrans<br>response.Write "<script>alert('您已成功申请信箱["&userid&userfield&"]!');document.location.href='<a target=_blank href=http://www.tuoboo.com'>http://www.tuoboo.com'</a>;</script>"<br>
end if<br>
End sub<br>
%> |
|