Domino9 下代理程序实现邮箱用户internet密码过期邮件提醒
Domino9 下代理程序实现邮箱用户internet密码过期邮件提醒
我们大家都知道Domino下有两个用户密码,一个是notes client密码(notes client)、一个是internet密码(inotes);对于两个密码的差别在此不作详细介绍,今天主要介绍,如果通过代理程序,然后设置定时代理,每天运行一次,判断用户的internet密码是否过期,多长时间过期,然后对于用户的internet密码快过期用户将以邮件的方式提醒用户更改;
之前在文档中写过域密码过期邮件提醒;该功能是通过vbs脚本执行,然后通过定义计划任务去执行的。
我的服务器策略修改为最长时间时间为180天
环境介绍:
一、环境介绍:
Hostname:iio-dc.iiosoft.com
Ip:10.1.1.254
Domain:iiosoft.com
Roles:DC、dns、dhcp
Hostname:iio-mail01.iiosoft.com
Ip:10.1.1.11
Roles:Domino9 server
Hostname:iio-mail02. iiosoft.com
Ip:10.1.1.12
Roles:Domino9 server
两台Domino server
为了保证当前架构的统一,在此我新建空白的数据库(在此建议大家也通过新建空白的数据库,添加程序。),然后新建代理程序;因为我之前已经创建过新的空白数据库,Chgupwd.nsf数据库,我将会在这个个数据库上新建代理―判断用户的internet是否过期;
二、我们的思路是创建一个单独的数据库,然后在数据库上创建代理、表单等;当然也可以直接在names.nsf数据库上直接操作,但是这样不保险,所以建议还是在单独的数据库上操作;
在此我们通过desinger创建新的数据库进行操作,具体见下:
通过desinger控制台----文件---应用程序---新建
该操作也可以通过names.nsf控制台下用同样的方式创建,创建完后,只需要通过desinger打开即可;
创建一个名为:ChgUpwd.nsf,类型为空的数据库
别名:TimeSendMainAgent
注释:定时判断密码过期时间发送邮件
Dim session As NotesSession Dim db As NotesDatabase Dim doc As NotesDocument Dim namesdb As NotesDatabase Dim namesdoc As NotesDocument Dim namesview As NotesView Dim username AsString
Sub Initialize On Error GoTo err_handle Dim flag As Boolean Dim mstring As String Dim arr As Variant Dim maildoc As NotesDocument Dim dt As NotesDateTime Dim dtnow As NotesDateTime Dim dfdaystime As Long Dim ritem As NotesRichTextItem Set session = New NotesSession Set db = session.Currentdatabase Set doc = session.Documentcontext Set namesdb = New NotesDatabase("","names.nsf") If Not namesdb.Isopen Then MsgBox "您无权限修改,请联系管理员" Exit sub End If Set namesview = namesdb.Getview("People") Set namesdoc = namesview.Getfirstdocument() While Not namesdoc Is Nothing 'namesdoc. HTTPPasswordChangeDate = Now Set dtnow = session.Createdatetime(now) dtnow.Setnow If namesdoc.HTTPPasswordChangeDate(0) <> "" Then Set dt = session.Createdatetime(namesdoc.HTTPPasswordChangeDate(0)) username = namesdoc.ShortName(0) MsgBox "username="+username dfdaystime = dt.Timedifference(dtnow) MsgBox dfdaystime/86000 If dfdaystime/86000 < 30 Then If Trim(namesdoc.InternetAddress(0))<>"" Then Set maildoc = New NotesDocument(db) maildoc.Form = "Memo" maildoc.Subject = "邮箱密码过期提醒" maildoc.sendto = namesdoc.InternetAddress(0) maildoc.Principal = "[email protected]" Set ritem = New NotesRichTextItem(maildoc,"body") Call ritem.Appendtext(username+"您的密码将在"+CStr(cint(dfdaystime/86000))+"天后过期") Call ritem.Addnewline(1) Call ritem.Appendtext("请通过以下方式更改") Call ritem.Addnewline(2) Call ritem.Appendtext("更改后密码将在5分钟后生效") Call ritem.Addnewline(2) Call ritem.Appendtext("如果有问题请联系is") Call ritem.Addnewline(2) 'maildoc.body = "你的邮箱密码将在30天后过期,请通过http://changepass.beyondsoft.com.iiosoft.com的方式进行更改。嗯" Call maildoc.Send(false) End if End If End If %REM 设置180天,如果当前时间减去30天,和密码变更时间 %END REM Set namesdoc = namesview.Getnextdocument(namesdoc) Wend Exit Sub err_handle: MsgBox session.Currentdatabase.Filepath + session.Currentagent.name MsgBox Error MsgBox Erl End Sub
最主要的是提醒内容,提醒主题:
maildoc.Subject = "邮箱密码过期提醒" maildoc.sendto = namesdoc.InternetAddress(0) maildoc.Principal = "[email protected]" Set ritem = New NotesRichTextItem(maildoc,"body") Call ritem.Appendtext(username+"您的密码将在"+CStr(cint(dfdaystime/86000))+"天后过期") Call ritem.Addnewline(1) Call ritem.Appendtext("请通过以下方式更改") Call ritem.Addnewline(2) Call ritem.Appendtext("更改后密码将在5分钟后生效") Call ritem.Addnewline(2) Call ritem.Appendtext("如果有问题请联系is") Call ritem.Addnewline(2)
定义代理属性,定时执行
我设置定时,每天执行一次(可根据自己的真实环境设置),每天的01:00执行一次
设置成功后,我们在控制台查看代理的运行状态,运行成功,而且判断有3个用户密码即将过去,将邮件提醒内容发送给相应的用户,接下来我们查看用户收到邮件后的信息
我们打开gavin的邮箱,发现收到一封邮件,
邮件内容说,gavin的密码将在30天后过期,请修改。对于修改内容,可根据自己的真实环境部署。