加载中…
个人资料
junzhi
junzhi
  • 博客等级:
  • 博客积分:0
  • 博客访问:1,584
  • 关注人气:9
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

[原创]hMailserver功能扩展:COM API开发之二

(2012-11-07 15:57:23)
标签:

hmailserver

com

api

web管理

it

分类: IT技术
接上篇:
二、实现功能3,修改\hMailServer\PHPWebAdmin\hm_accounts.php

//在$str_maxsizemb下面添加和修改内容:

$str_maxsizemb       = $obLanguage->String("Maximum size (MB)");

$str_quotaused     = $obLanguage->String("Quota used (%)");

$str_lastlogontime   = $obLanguage->String("Last logon time");

$str_active   = $obLanguage->String("Enabled");

echo "";

echo "$str_accountaddress";

echo "$str_maxsizemb";

echo "$str_quotaused";

echo "$str_lastlogontime";

echo "$str_active";

echo "";

echo "";

//在$accountmaxsize下面增加和修改内容:

$accountmaxsize      = $obAccount->MaxSize();

$accountquotaused    = $obAccount->quotaused();

$accountlastlogontime= $obAccount->LastLogonTime();

$accountactive       = $obAccount->Active;

$str_today           = strtotime (date("y-m-d h:i:s"));  //当前时间

$str_lastlogontime2  =strtotime($accountlastlogontime);

$accountaddress = PreprocessOutput($accountaddress);

$accountaddress_escaped = GetStringForJavaScript($accountaddress);

   

echo "$bgcolor\">";

echo "$domainid&accountid=$accountid\">$accountaddress";

echo "$accountmaxsize";

if ($accountquotaused >80)

{

  echo "$accountquotaused";

}

else

{

  echo "$accountquotaused";

}

if (ceil(($str_today - $str_lastlogontime2)/86400) > 30) //60s*60min*24h,大于30天

{

  echo "$accountlastlogontime";

}

else

{

  echo "$accountlastlogontime";

}

if ($accountactive == 1)

{

  echo "Yes";

}

else

{

  echo "No";

}

echo "";

//保存后刷新web管理页面,进入账户列表页面即可看到效果如下:

三、实现功能4,在\hMailServer\Events\下建立一个.vbs文件,粘贴如下内容,并按需修改文本开头的几个变量,然后运行这个VBS程序即可:
  '***这个程序会逐账号,逐邮件扫描指定域名下的所有邮件,然后将日期早于指定天数的邮件删除,注意,删除的邮件无法恢复!!!

 '******收集环境数据,请按实际情况修改下列5个变量******

 Dim sPwd,sDomain,sLogfile,sTmpDBidFile,iDays

 sPwd = "password"   'hMailServer的管理员Administrator密码

 sDomain = Trim(InputBox("请输入要清理的域如yourdomain.com:","hMailServer旧邮件清理"))  '域名用输入以适应多域名的情况

 sLogfile = "..\Logs\ClearOlderMails_" & date() & ".log"

 sTmpDBidFile = "..\Logs\tmpDBID.txt"

 iDays = 180  '天数在此设置,避免不小心输入较小的数字导致误删近期邮件

 

 '******确认******

 If MsgBox("注意,删除的邮件无法恢复!" & vbCr & "本程序需要一定时间执行,结束会弹出处理结果,请耐心等待。" & vbCr & "确定要删除指定域:" & vbCr & sDomain & vbCr & "下包含的所有 " & iDays & 天前的邮件吗?",vbYesNo+vbQuestion+vbDefaultButton2,"确认") = vbNo then wscript.quit

 

 '******开始处理******

 Dim obApp

 Set obApp = CreateObject("hMailServer.Application")

 Call obApp.Authenticate("Administrator", sPwd)  '获得操作权限

 Dim obDomain,bolDomainExist

 bolDomainExist = False 

 For i=0 to obApp.Domains.Count-1

   If obApp.Domains.Item(i).Name = sDomain then bolDomainExist = True

 Next

 If bolDomainExist = False Then

   msgBox "域:" & sDomain & 不存在,无法处理。",vbOKOnly+vbExclamation,"出错"

   wscript.quit

 end if

 Set obDomain = obApp.Domains.ItemByName(sDomain)  '获得域

 Dim obAccount,obIMAPFolder,obMessages,obMessage

 Set FSO3 = CreateObject("Scripting.FileSystemObject")

 Set str3 = FSO3.OpenTextFile(sLogfile,8,True)  '追加方式打开日志

 For i=0 to obDomain.Accounts.count-1

   Set obAccount = obDomain.Accounts.Item(i)

   Set obMessages = obAccount.Messages

   dim iCount

   iCount = 0

  'if obAccount.Address="user@yourdomain.com" then  '可以这里指定账号测试,以免误删,误删邮件无法恢复!!!

   Set FSO4 = CreateObject("Scripting.FileSystemObject")

   Set str4 = FSO4.OpenTextFile(sTmpDBidFile,2,True)  '新建存放邮件DBID的临时文件

   For j=0 to obMessages.count-1

     if DateDiff("d",obMessages.Item(j).InternalDate,now()) > iDays then  '清理***iDays***天前的邮件

       iCount = iCount + 1  '统计删除邮件数目

  '记录将要删除的邮件DBID,不在这个FOR循环里删除原因是删除后会改变obMessges.count,导致循环下标越界

  strResponses = str4.Writeline(obMessages.Item(j).ID)  '写DBID

end if

   Next

   str4.Close

   Set str4 = FSO4.OpenTextFile(sTmpDBidFile,1,True)  '只读方式打开

   Do Until str4.AtEndOfStream

     Call obMessages.DeleteByDBID(str4.ReadLine)  '删除邮件,无法恢复!!!

   Loop

   str4.Close

   if iCount > 0 then

     strResponses = str3.Writeline(Now() & -> " & obAccount.Address & "–> " & iCount & messages has been deleted")  '写日志

   end if  

  'end if   

 next

 str3.Close

 Set wshshell=Createobject("wscript.shell") 

 wshshell.Run sLogfile  '打开日志查看处理结果

 '******处理结束******

 

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有