我们大家都知道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
注释:定时判断密码过期时间发送邮件
1
2
3
4
5
6
7
|
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
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
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 =
"is@iiosoft.com"
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
|
最主要的是提醒内容,提醒主题:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
maildoc.Subject =
"邮箱密码过期提醒"
maildoc.sendto = namesdoc.InternetAddress(0)
maildoc.Principal =
"is@iiosoft.com"
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天后过期,请修改。对于修改内容,可根据自己的真实环境部署。
本文转自 高文龙 51CTO博客,原文链接:http://blog.51cto.com/gaowenlong/1355292,如需转载请自行联系原作者