Domino9 下代理程序实现邮箱用户internet密码过期邮件提醒

简介:

我们大家都知道Domino下有两个用户密码,一个是notes client密码(notes client)、一个是internet密码(inotes);对于两个密码的差别在此不作详细介绍,今天主要介绍,如果通过代理程序,然后设置定时代理,每天运行一次,判断用户的internet密码是否过期,多长时间过期,然后对于用户的internet密码快过期用户将以邮件的方式提醒用户更改;

之前在文档中写过域密码过期邮件提醒;该功能是通过vbs脚本执行,然后通过定义计划任务去执行的。

我的服务器策略修改为最长时间时间为180天

clip_image002

环境介绍:

一、环境介绍:

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打开即可;

clip_image003

创建一个名为:ChgUpwd.nsf,类型为空的数据库

clip_image004

clip_image005

别名:TimeSendMainAgent

注释:定时判断密码过期时间发送邮件

clip_image007

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

clip_image009

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

clip_image011

最主要的是提醒内容,提醒主题:

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)

定义代理属性,定时执行

clip_image013

我设置定时,每天执行一次(可根据自己的真实环境设置),每天的01:00执行一次

clip_image015

设置成功后,我们在控制台查看代理的运行状态,运行成功,而且判断有3个用户密码即将过去,将邮件提醒内容发送给相应的用户,接下来我们查看用户收到邮件后的信息

clip_image017

我们打开gavin的邮箱,发现收到一封邮件,

clip_image019

邮件内容说,gavin的密码将在30天后过期,请修改。对于修改内容,可根据自己的真实环境部署。

clip_image021

image



本文转自 高文龙 51CTO博客,原文链接:http://blog.51cto.com/gaowenlong/1355292,如需转载请自行联系原作者

相关文章
|
6月前
|
API
Outlook邮箱怎么建立邮件组?
在Outlook中创建邮件组,登录邮箱后点击“联系人”,选择“新建联系人组”,命名并添加成员,保存即成。发邮件时直接写邮件组名,Outlook会自动填充成员。可编辑或删除组,高效管理邮件收发。
|
安全 数据安全/隐私保护 容器
|
数据安全/隐私保护