Reputation: 211
Case happen: User From Notes Mail change to Office 365, their email contain Lotus notes link(Document link) which cannot be accessible.
Call rtBody.Appenddoclink(LateInVw, "", "Click to view your attendance today") , I put the "NotesView"into the email body which not show up on office 365. May i know office 365 have any way to identify this is notes Client application and try to open the notes application of that view?
Dim tdy As Variant
Sub Initialize()
Print"Agent:Request for LateIn Reason started running at " & DateValue(Now()) & "," + TimeValue(Now())
On Error GoTo errhandler
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 AttVw As NotesView, Attdoc As notesdocument
Dim MailDoc As NotesDocument
Dim rtBody As NotesRichTextItem
Set db=ss.Currentdatabase
Set LateInVw=db.getview("($Today Not Alerted 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 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
email$=staffDoc.email(0)
Set Maildoc=New NotesDocument(db)
maildoc.Sendto=email$
maildoc.Subject="Smartcard Attendance System: Late-In Notification for " +Format$(LateDoc.TDate(0),"dd/mm/yyyy")
Set rtBody=New NotesRichTextItem(maildoc, "Body")
Call rtBody.appendtext(" Dear"+" "+ staffDoc.StaffName(0)+",")
Call rtBody.AddNewline(2)
Call rtBody.appendtext("You clocked in to work today at "+lateDoc.TAmend(0)+". Please click on the link below to submit your reason for the late attendance. Thank You!")
Call rtBody.Addnewline(1)
Call rtBody.Appenddoclink(LateInVw, "", "Click to view your attendance today")
Call rtBody.Addnewline(2)
Call rtBody.Appendtext("***If the box to key in the late-in reason does not appear, kindly use the 'History Attendance' to key-in instead.")
maildoc.send(False)
End If
End If
'End If 'check late-in on/off in attendance settings
LateDoc.LateInAlert="Send"
Call LateDoc.save(True,False)
End If 'check late-in on/off in attendance settings
Set LateEntry=LateInDocs.Getnextentry(LateEntry)
Loop
Print"Agent:Request for LateIn Reason ended running at " & DateValue(Now()) & "," + TimeValue(Now())
Exit Sub
errhandler:
Print "Got error " & Error$ & " on line " & CStr(Erl)
Resume next
Print"Agent:Request for LateIn Reason ended running at " & DateValue(Now()) & "," + TimeValue(Now())
End Sub
This is my sample rewrite code as Mime format...
Sub Initialize
Dim ss As New NotesSession
Dim db As NotesDatabase
Dim vw As NotesView
'Dim Doc As NotesViewEntryCollection
Dim LateInVw As NotesView
Dim Ec As NotesViewEntryCollection
Dim Entry As NotesViewEntry
Dim Doc As NotesDocument
Dim MailDoc As NotesDocument
Dim rtBody As NotesRichTextItem
Set db=ss.Currentdatabase
Set vw=db.getview("(test send mail)")
tdy=DateValue(Now)
%Rem
Set replydoc = db.Createdocument()
Call replydoc.Replaceitemvalue("Form", "Memo")
Call replydoc.Replaceitemvalue("Subject", "Pre-check Passed - " + apptitle)
Call replydoc.Replaceitemvalue("SendTo", indoc.From(0))
Call replydoc.Replaceitemvalue("BlindCopyTo", mailinadd)
Set body = replydoc.Createmimeentity
%End Rem
Set EC = vw.Allentries
Set Entry=Ec.getfirstentry
Do While Not Entry Is Nothing
Set Doc = Entry.Document
email$="[email protected]"
Set Maildoc= db.Createdocument()
Call Maildoc.Replaceitemvalue("Form", "Memo")
Call Maildoc.Replaceitemvalue("Subject", "Test Send Mail, Mime Format")
Call Maildoc.Replaceitemvalue("SendTo",email$)
Set body = Maildoc.Createmimeentity
ss.Convertmime = False
Set stream = ss.Createstream()
stream.Writetext(|<html><body>|)
stream.Writetext(|<p>Dear Sir, | + |,</p>|)
stream.Writetext(|<p>This is a testing mail. Thanks You!<br>| + |</p>|)
stream.Writetext(|<p>|+|Notes://Mulu/482577AE00260EC5/|+ +Doc.Universalid+|</p>|)
Call stream.Writetext(|</body></html>|)
Call body.Setcontentfromtext(stream, "text/html;charset=UTF-8", 1725)
Call maildoc.Send(False)
ss.Convertmime = True
Set Entry = EC.Getnextentry(Entry)
Loop
End Sub
I not sure how to just open notes document directly...as everytime i click the link it go to the frameset itself...which is not correct!
Upvotes: 0
Views: 1092
Reputation: 14628
If you're asking about just this one application, then what you need to do is learn about notes:// URLs, which you can read about here. You just need to change your code to generate a correctly formatted URL for the view, either instead of or in addition to the doclink. When the user clicks the notes:// URL, the Notes client will open and take the user to the view.
If, however, you actually have lots of applications that send doclinks to users, than you may want to look for a solution that installs on your Domino server and handles this automatically for all the applications without you having to change any code. A company called Genii Software has a product called CoExLinks Fidelity that does this.
Upvotes: 1