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

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

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

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

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

Domino9 下代理程序实现邮箱用户internet密码过期邮件提醒_第1张图片

环境介绍:

一、环境介绍:

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

Domino9 下代理程序实现邮箱用户internet密码过期邮件提醒_第2张图片

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

Domino9 下代理程序实现邮箱用户internet密码过期邮件提醒_第3张图片

Domino9 下代理程序实现邮箱用户internet密码过期邮件提醒_第4张图片

别名:TimeSendMainAgent

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

Domino9 下代理程序实现邮箱用户internet密码过期邮件提醒_第5张图片

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

Domino9 下代理程序实现邮箱用户internet密码过期邮件提醒_第6张图片

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

Domino9 下代理程序实现邮箱用户internet密码过期邮件提醒_第7张图片

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

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)

定义代理属性,定时执行

Domino9 下代理程序实现邮箱用户internet密码过期邮件提醒_第8张图片

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

Domino9 下代理程序实现邮箱用户internet密码过期邮件提醒_第9张图片

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

Domino9 下代理程序实现邮箱用户internet密码过期邮件提醒_第10张图片

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

Domino9 下代理程序实现邮箱用户internet密码过期邮件提醒_第11张图片

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

Domino9 下代理程序实现邮箱用户internet密码过期邮件提醒_第12张图片

Domino9 下代理程序实现邮箱用户internet密码过期邮件提醒_第13张图片