邮件服务器-邮件系统-邮件技术论坛(BBS)

 找回密码
 会员注册
查看: 13980|回复: 7
打印 上一主题 下一主题

再谈MDAEMON修改

[复制链接]
跳转到指定楼层
顶楼
发表于 2004-7-21 16:26:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
由于工作需要不得不修改MDAEMON的Webmail,修改后总结了几条、也发现了几个问题,写出来和大家讨论讨论,附上一个小弟我做的main.html页的例子,大家一起研究。<br>
<br>
说明:<br>
1. 路径说明:<br>
此次修改都是以\MDaemon\WorldClient\Templates\Standard目录下的文件为基本模板,修改全在此基础之上。<br>
\MDaemon\WorldClient\Templates目录为模板目录,修改后的模板文件要覆盖此目录下的所有同名文件,以避免使用时出现不同模板的情况。<br>
\MDaemon\WorldClient\HTML目录为WEBMAIL的主目录,此目录的文件可以在IIS中访问到,目录中存放的为IMG和CSS类型文件。浏览的过程中加载到模板中发送到客户端,形成浏览界面。所以在此目录中增加新文件才可以用相对路径的形式引用。<br>
<br>
2. 文件说明:<br>\MDaemon\WorldClient\HTML\WorldClient.dll,此文件是WEBMAIL的功能文件,所有浏览都由它解释、运行。接受参数传入,如:<a target=_blank href=http://localhost:3000/WorldClient.dll?View=Main&user=sun&password=123456>http://localhost:3000/WorldClient.dll?View=Main&user=sun&password=123456</a>。此意义为用sun密码123456登陆。<br>
3. 代码说明:<br>
在模板文件中支持MDAEMON特定的代码,<$CODE$>格式表示的是代码部分,多位系统变量,如:<$THEME$>根据当前配置解释为Standard、Simple等,<$LINKS$>解释为链接“<a target=_blank href=http://..../WorldClient.dll?Session=????>http://..../WorldClient.dll?Session=????</a>”。[$CODE$]格式为多语言支持用于显示文本的代码,多用于提示信息等,如:[$Size$]表示为中文文本“大小”,如果是英文配置则为“SIZE”。<br>
4. 修改方法:<br>
增加、删除、修改相对应位置的代码即可。<br>
技巧:•可以在浏览的时候点右键看属性来查找相应的要修改的代码位置<br>
•不通过IIS,直接双击HTML文件查看,这样更明显。<br>
5. 部分页的作用说明<br>
文件名 说明<br>
Menu.html 工具栏页<br>
List.html 邮件列表页<br>
Message.html 邮件详细页<br>
Options.html 功能选项页<br>
Options-Prefs.html 个性化设置页<br>
Options-Compose.html 撰写功能选项页<br>
Options-Folders.html 文件夹功能页<br>
Logon.html 登陆页<br>
AddrLookup.html 查找地址页<br>
Compose-Attach.html 添加附件页<br>
Compose.html 写邮件页<br>
沙发
 楼主| 发表于 2004-7-21 16:31:54 | 只看该作者

Re:再谈MDAEMON修改

<br>
<IMG SRC=../leadbbsfile/fileType/jpg.gif border=0 onLoad="javascript:if(this.width>570)this.width=570;" onMouseover="javascript:if(this.width>570)this.width=570;" align=absmiddle>此主题相关图片<br>
<IMG SRC=../leadbbsfile/upload/2004/07/21/595091093750.jpg border=0 alt=按此在新窗口浏览图片 onclick="javascript:window.open(this.src);" onLoad="javascript:if(this.width>570)this.width=570;" onMouseover="javascript:if(this.width>570)this.width=570;" style="cursor:hand" align=absmiddle><br>
藤椅
 楼主| 发表于 2004-7-21 16:44:38 | 只看该作者

Re:再谈MDAEMON修改

大家看到二楼的图片是我删除了一些功能和修改了css文件后的样子<br>
<br>
下面就说说我做的main.html页<br>
<br>
<IMG SRC=../leadbbsfile/fileType/jpg.gif border=0 onLoad="javascript:if(this.width>570)this.width=570;" onMouseover="javascript:if(this.width>570)this.width=570;" align=absmiddle>此主题相关图片<br>
<IMG SRC=../leadbbsfile/upload/2004/07/21/620291562500.jpg border=0 alt=按此在新窗口浏览图片 onclick="javascript:window.open(this.src);" onLoad="javascript:if(this.width>570)this.width=570;" onMouseover="javascript:if(this.width>570)this.width=570;" style="cursor:hand" align=absmiddle><br>
<br>
<br>
很多朋友都想到用自己的frame,因为这样可以集成到自己想要的地方去,经过小弟我研究,自己试着做了一个,功能实现了,就是方法有些笨,希望有大侠指点一二。<br>
<br>
<table width=100% bgcolor=#f7f7f7 cellpadding=5 cellspacing=2 class=TBBG9><tr><td bgcolor=eeeeee class=TBBG1><br>
main.html<br>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"><br>
<html><br>
<head><br>
<title>Frameset Template</title><br>
</head><br>
<frameset rows="64,*"><br>
<frame name="banner" scrolling="no" noresize><br>
<frameset cols="150,*"><br>
<frame name="menu" src="left.htm"><br>
<frame name="main"><br>
</frameset><br>
<noframes><br>
<p>This page requires frames, but your browser does not support them.</p><br>
</noframes><br>
</frameset><br>
</html><br>
</td></tr></table><br>
其实这个简单,关键在于那个left.htm<br>
<table width=100% bgcolor=#f7f7f7 cellpadding=5 cellspacing=2 class=TBBG9><tr><td bgcolor=eeeeee class=TBBG1><br>
left.htm<br>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"<br>
"<a target=_blank href=http://www.w3.org/TR/html4/loose.dtd&quot>http://www.w3.org/TR/html4/loose.dtd&quot</a>;><br>
<html><br>
<head><br>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"><br>
<title>left</title><br>
</head><br>
<script language=javascript><br>
function cmdurl(cmd)<br>
{<br>
ur="<a target=_blank href=http://localhost:3000/WorldClient.dll?View=Main&user=sun&password=123456&logon=no&cmd=&quot>http://localhost:3000/WorldClient.dll?View=Main&user=sun&password=123456&logon=no&cmd=&quot</a>;;<br>
ur=ur+cmd;<br>
parent.main.location.href=ur; <br>
}<br>
function logon()<br>
{<br>
parent.main.location.href="<a target=_blank href=http://localhost:3000&quot>http://localhost:3000&quot</a>;;<br>
}<br>
</script><br>
<body><br>
<br>
<p><a href="javascript:cmdurl('compose');">写邮件</a></p><br>
<p><a href="javascript:cmdurl('index');">收件箱</a></p><br>
<p><a href="javascript:cmdurl('drafts');">草稿箱</a></p><br>
<p><a href="javascript:cmdurl('sent');">发件箱</a></p><br>
<p><a href="javascript:cmdurl('deleted');">回收站</a></p><br>
<br>
<p><a href="javascript:logon();"</a>登陆口</p><br>
</body><br>
</html><br>
</td></tr></table><br>
<br>
说明一下,我是用cmd=""这样把参数传递给邮件服务器的,但它本身不能解释,所以要在下一步自己处理,那个logon参数是小弟特殊自用,稍后解释。那个user和password就根据你自己的需要了,这个传入它就是模拟了登陆过程。<br>
下面就是修改MDAEMON自己的那个main.html页了<br>
此页的路径为\MDaemon\WorldClient\Templates\Standard,这里我用的风格是standard配置,其他的风格可修改对应文件夹下的文件即可。<br>
<table width=100% bgcolor=#f7f7f7 cellpadding=5 cellspacing=2 class=TBBG9><tr><td bgcolor=eeeeee class=TBBG1><br>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><br>
<html><br>
<head><br><title>WorldClient</title><br>
<script type="text/javascript"><br>
<br>
function QueryString(){//构造参数对象并初始化 <br>
var name,value,i; <br>
var str=location.href;//获得浏览器地址栏URL串 <br>
var num=str.indexOf("?") <br>
str=str.substr(num+1);//截取“?”后面的参数串 <br>
var arrtmp=str.split("&");//将各参数分离形成参数数组 <br>
for(i=0;i < arrtmp.length;i++){ <br>
num=arrtmp[i].indexOf("="); <br>
if(num>0){ <br>
name=arrtmp[i].substring(0,num);//取得参数名称 <br>
value=arrtmp[i].substr(num+1);//取得参数值 <br>
this[name]=value;//定义对象属性并初始化 <br>
} <br>
} <br>
} <br>
var Request=new QueryString();//<br>
var cmdstr = Request["cmd"];<br>
var fr_url="<$Link$>&View=<$FRAMEVIEW$>";<br>
var logon = Request["logon"]<br>
if(cmdstr=="compose")<br>
{ <br>
fr_url="<$LINK$>&View=Compose&New=Yes";<br>
};<br>
if(cmdstr=="index")<br>
{<br>
fr_url="<$LINK$>&View=List&Folder=Index";<br>
};<br>
if(cmdstr=="drafts")<br>
{<br>
fr_url="<$LINK$>&View=list&Folder=Drafts";<br>
};<br>
if(cmdstr=="sent")<br>
{<br>
fr_url="<$LINK$>&View=list&Folder=Sent Items";<br>
};<br>
if(cmdstr=="deleted")<br>
{<br>
fr_url="<$LINK$>&View=list&Folder=Deleted Items";<br>
};<br>
if(logon=="no")<br>
{ <br>
document.write("<frameset rows='0, *' frameborder='0' border='0' framespacing='0' bordercolor='#000000'>");<br>
document.write("<frame name='Menu' src='<$Link$>&View=Menu' scrolling='no' noresize frameborder='0' bordercolor='#000000'>");<br>
document.write("<frame name='Main' src='"+fr_url+"' scrolling='auto' noresize>");<br>
document.write("</frameset>");<br>
<br>
fr_url=null;<br>
}<br>
else<br>
{<br>
document.write("<frameset cols='135, *' frameborder='0' border='0' framespacing='0' bordercolor='#000000'>");<br>document.write("<frame name='Menu' src='<$Link$>&View=Menu' scrolling='auto' noresize frameborder='0' bordercolor='#000000'>");<br>document.write("<frame name='Main' src='<$Link$>&View=<$FRAMEVIEW$>' scrolling='auto' noresize>");<br>
document.write("</frameset>");<br>} <br>
</script><br>
</head><br>
<br>
</html><br>
</td></tr></table><br>
<br>
最前面的代码部分是解释我传入的参数,根据参数指定要显示的页。这样就达到了集成的目的,集成时,我把menu框架的高度设置成了0,相当于把它隐藏了。<br>
现在解释一下logon参数的作用,因为这里我们是集成后显示的,但如果用<a target=_blank href=http://localhost:3000>http://localhost:3000</a>这种方式查看的话就会出现找不到页的情况,所以用logon参数是用来判断的。<br>
OK,就写这些了,其他的页修改的时候找到对应页,去掉css,用面目全飞脚就可以了。<br>
<br>
<br>
板凳
 楼主| 发表于 2004-7-21 17:05:00 | 只看该作者

Re:再谈MDAEMON修改

贴出一段我修改过的带注释的代码<br>
这是对\MDaemon\WorldClient\Templates\Standard下Options.html的修改<br>
<table width=100% bgcolor=#f7f7f7 cellpadding=5 cellspacing=2 class=TBBG9><tr><td bgcolor=eeeeee class=TBBG1><br>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"><br>
<html><br>
<head><br><meta http-equiv="Content-Type" content="text/html; CHARSET=<$CharSet$>"><br><link rel="stylesheet" type="text/css" href="<$THEME$>/<$Style$>.css"><br><script type="text/javascript" src="<$THEME$>/globals.js"></script><br>
<script type="text/javascript"><br>
<$IF CGI:Reload$><br>top.frames[0].document.location.reload(true);<br>
<$ENDIF$><br>
function init()<br>
{<br>
Mesg('<$ERRORMESG,JS$>');<br>
}<br>
</script><br>
<br>
</head><br>
<body onload="init();"><br>
<p><br>
<a class="Options" href="<$Link$>&View=Options-Prefs">[$Personalize$]</a><br>
<br /><br>
[$Customize the appearance and operation of your account.$]<br>
</p><!--个性化设置--><br>
<p><br>
<a class="Options" href="<$Link$>&View=Options-Compose">[$Compose$]</a><br>
<br /><br>
[$Customize the appearance and operation of message composition.$]<br>
</P><!--撰写--><br>
<!--<$IF MDPRO$><br>
<$IF CALISENABLED$><br>
<p><br>
<a class="Options" href="<$Link$>&View=Options-Calendar">[$Calendar$]</a><br>
<br /><br>
[$Customize the operation and settings of your calendar.$]<br>
<br>
</p><br>
<$ENDIF$><br>
<$ENDIF$>--><!--日程--><br>
<!--<br>
<$IF WEBADMIN$><br>
<p><br>
<a class="Options" href="<$Link$>&View=WebAdmin" target="_blank">[$MDaemon Settings$]</a><br>
<br /><br>
[$Customize your MDaemon mail account settings.$]<br>
</P><br>
<$ENDIF$>--><!--MDaemon 设置--><br>
<p><br>
<a class="Options" href="<$Link$>&View=Options-Folders">[$Folders$]</a><br>
<br><br>
[$Create personal folders to store and manage your messages.$]<br>
</p><!--文件夹--><br>
<!--<br>
<$IF MULTIPOPSERVERENABLED$> <br>
<p><br>
<a class="Options" href="<$Link$>&View=Options-MultiPOP">[$Mailboxes$]</a><br>
<br /><br>
[$Add external mailboxes that WorldClient should collect mail from.$]<br>
</p><br>
<$ENDIF$>--><!--其它pop?--><br>
<!--<br>
<$IF CANEDITFILTERS$><br>
<p><br>
<a class="Options" href="<$Link$>&View=Options-Filters">[$Filters$]</a><br>
<br /><br>
[$Set rules to distribute your incoming messages to specific folders, and/or prevent unwanted mail.$]<br>
</p><br>
<$ENDIF$>--><!--邮件过滤--><br>
<!--<br>
<$IF GroupWare$><br>
<p><br>
<a class="Options" href="<$Link$>&View=Groupware">MDaemon GroupWare</a><br>
<br /><br>
[$Share your Outlook calendars, contacts, and more with other users.$]<br>
</p><br>
<$ENDIF$>--><!--分组?--><br>
<!--<br>
<$IF COMAGENT$><br>
<p><br>
<a class="Options" href="<$Link$>&View=ComAgent">ComAgent</a><br>
<br /><br>
[$Monitor your mail and sychronize your address book with ComAgent.$]<br>
</p><br>
<$ENDIF$>--><!--ComAgent --><br>
</body><br>
</html><br>
</td></tr></table>
报纸
 楼主| 发表于 2004-7-21 17:08:29 | 只看该作者

Re:再谈MDAEMON修改

不知道大家发现没有,我贴的图当中(二楼),我的配额显示110%,这个我晕,但的确不是出错,它好像有一定的缓冲区吧<br>
还有就是问大家一个问题,MDAEMON中有没有直接删除邮件,而不是删除到回收站的功能啊,我没找到....
地板
发表于 2004-7-21 18:29:19 | 只看该作者

Re:再谈MDAEMON修改

好文章!顶个先,要下班明天研究!
7
发表于 2004-7-22 09:16:56 | 只看该作者

Re:再谈MDAEMON修改

感谢了,好文章
8
发表于 2004-8-21 21:45:27 | 只看该作者

re:好极了,哥哥。EX在行么?

好极了,哥哥。EX在行么?<br>
您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

小黑屋|手机版|Archiver|邮件技术资讯网

GMT+8, 2026-8-6 05:47

Powered by Discuz! X3.2

© 2001-2016 Comsenz Inc.

本论坛为非盈利中立机构,所有言论属发表者个人意见,不代表本论坛立场。内容所涉及版权和法律相关事宜请参考各自所有者的条款。
如认定侵犯了您权利,请联系我们。本论坛原创内容请联系后再行转载并务必保留我站信息。此声明修改不另行通知,保留最终解释权。
*本论坛会员专属QQ群:邮件技术资讯网会员QQ群
*本论坛会员备用QQ群:邮件技术资讯网备用群

快速回复 返回顶部 返回列表