Search code examples
lotus-noteslotusscriptlotuslotus-formula

running mail doc, server link not working properly


Problem :

  1. Using Agent run and send mail give a different link

  2. Mail Contain a link which is not include database

  3. I set it send to a yahoo mail

    Sub Initialize()
    Print"Agent:First Reminder for LateIn Reason started running at " & DateValue(Now()) & "," + TimeValue(Now())
    Dim ss As New NotesSession
    Dim db As NotesDatabase
    Dim LateInVw As NotesView
    Dim LateInDocs As NotesViewEntryCollection
    Dim LateEntry As NotesViewEntry
    Dim LateDoc As NotesDocument
    Dim StaffVw As NotesView, StaffDoc As NotesDocument
    Dim MailDoc As NotesDocument
    Dim rtBody As NotesRichTextItem
    Dim sysdoc As NotesDocument, sysVw As NotesView
    Dim AttVw As NotesView, Attdoc As NotesDocument
    
    Set db=ss.Currentdatabase
    
    Set sysVw=db.getview("($System Settings)")
    Set sysdoc=sysvw.getfirstdocument
    If sysdoc Is Nothing Then Exit Sub
    
    
    Set LateInVw=db.getview("(Testing Late-In Time Records)")
    
    
    Set StaffVw=db.getview("($Active Staff by ID)")
    
    Set AttVw = db.Getview("($Effective Attendance Setting By ID)")
    tdy=Datevalue(Now)
    
    'get all time records for today
    Set LateInDocs=LateInVw.Allentries
    Set lateEntry=LateInDocs.getfirstentry
    Do While Not LateEntry Is Nothing
        Set LateDoc=LateEntry.Document
        Set Attdoc=Attvw.Getdocumentbykey(LateDoc.TStaffID(0), True)
        If Attdoc.LateAtt(0)="Yes" Then
        If LateDoc.LateReason(0)=""  Then
            If Not ApprovedLateIn(LateDoc, LateDoc.TAmend(0), False) Then
            'get staff mail
                Set staffDoc=StaffVw.Getdocumentbykey(LateDoc.TStaffID(0), True)
                If Not staffdoc Is Nothing Then
                'send email with link to main menu
                    If email$<>staffDoc.email(0) Then
                    '   email$=staffDoc.email(0)
                        email$="[email protected]"
                        Set Maildoc=New NotesDocument(db)
                        Set maildoc=db.Createdocument()
                        maildoc.Form="First Reminder Notification"
                        maildoc.Subject="Smartcard Attendance System: Late-In Notification for " +Format$(LateDoc.TDate(0),"dd/mm/yyyy")
                        Maildoc.StaffName=staffDoc.StaffName(0)
                        maildoc.Sendto="[email protected]"
                    '   maildoc.NotifyDate=LateDoc.Tdate(0)
                        maildoc.NotifyTime=Timevalue(LateDoc.TAmend(0))
                        maildoc.NotesServer=sysdoc.ServerPath(0)
                        maildoc.NotesDBPath=sysdoc.DBPath(0)
                        maildoc.send(True)
                    End If
                End If
            End If 'check against unimas's jadual kedatangan
        End If 'check for late in reason
        End If 'check late-in on/off in attendance settings
        Set LateEntry=LateInDocs.Getnextentry(LateEntry)
    Loop
    
    
    End Sub
    

I will attach my image file and coding here

wrong path come out from mail

correct path

from this 2 image you can see that, actually i want to put as a

notes://Mulu/SmartCard Attedancce/sas-server.nsf/Scais Main?OpenFrameset

but result of the mail send out is

notes:////Scais Main?OpenFrameset

which is no server and database. I am not sure what part of my coding is wrong

Another attachment will be the form i use as mail.form Form

hotspot link include script


Solution

  • First of all: Sending an external mail with a custom form like you do it is not the best Idea, as the target system might not be able to render everything accordingly.

    That said, I would first create a document that contains all data and then RENDER it to a maildoc. code would look like this:

    Dim Templatedoc as NotesDocument
    Dim body as NotesRichtextItem
    
    Set Templatedoc=New NotesDocument(db)
    Set Templatedoc=db.Createdocument()
    Templatedoc.Form="First Reminder Notification"
    Templatedoc.StaffName=staffDoc.StaffName(0)
    '   maildoc.NotifyDate=LateDoc.Tdate(0)
    Templatedoc.NotifyTime=Timevalue(LateDoc.TAmend(0))
    Templatedoc.NotesServer=sysdoc.ServerPath(0)
    Templatedoc.NotesDBPath=sysdoc.DBPath(0)
    
    Set maildoc=New NotesDocument(db)
    maildoc.Form = "Memo"
    maildoc.Subject="Smartcard Attendance System: Late-In Notification for " +Format$(LateDoc.TDate(0),"dd/mm/yyyy")
    maildoc.Sendto="[email protected]"
    
    Set body = New NotesRichtextItem( maildoc, "Body" )
    Call Templatedoc.RenderToRTItem( body )
    
    maildoc.send(True)
    

    Second: You set two fields (NotesServer and NotesDBPath) to compute your Link. But your link in reality is computed from environment- variables, and these are not set on the server.

    Change your Link- Computation- Formula to:

    srv := NotesServer;
    pth := NotesDBPath;
    

    That should do the trick for the link.