Office 365 邮件无法打开笔记 Link
office 365 mail unable to open notes Link which
案例发生:
用户从 Notes 邮件更改为 Office 365,他们的电子邮件包含无法访问的 Lotus Notes link(文档 link)。
调用 rtBody.Appenddoclink(LateInVw, "", "Click to view your attendance today") ,
我将 "NotesView" 放入电子邮件正文中,但 office 365 上没有显示。我可以知道 office 365 有什么方法可以识别这是笔记客户端应用程序并尝试打开该视图的笔记应用程序吗?
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
这是我将代码重写为 Mime 格式的示例...
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$="chee111385@gmail.com"
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
我不确定如何直接打开笔记文档...因为每次我单击 link 它都会转到框架集本身...这是不正确的!
如果您只是询问这个应用程序,那么您需要做的是了解 notes:// URLs,您可以 read about here。您只需要更改您的代码即可为视图生成格式正确的 URL,代替或补充文档链接。当用户单击 notes:// URL 时,Notes 客户端将打开并将用户带到视图。
但是,如果您实际上有很多向用户发送文档链接的应用程序,那么您可能希望寻找一种解决方案,该解决方案可以安装在您的 Domino 服务器上并自动为所有应用程序处理此问题,而无需更改任何代码。一家名为 Genii Software 的公司有一款名为 CoExLinks Fidelity 的产品可以做到这一点。
案例发生: 用户从 Notes 邮件更改为 Office 365,他们的电子邮件包含无法访问的 Lotus Notes link(文档 link)。
调用 rtBody.Appenddoclink(LateInVw, "", "Click to view your attendance today") , 我将 "NotesView" 放入电子邮件正文中,但 office 365 上没有显示。我可以知道 office 365 有什么方法可以识别这是笔记客户端应用程序并尝试打开该视图的笔记应用程序吗?
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
这是我将代码重写为 Mime 格式的示例...
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$="chee111385@gmail.com"
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
我不确定如何直接打开笔记文档...因为每次我单击 link 它都会转到框架集本身...这是不正确的!
如果您只是询问这个应用程序,那么您需要做的是了解 notes:// URLs,您可以 read about here。您只需要更改您的代码即可为视图生成格式正确的 URL,代替或补充文档链接。当用户单击 notes:// URL 时,Notes 客户端将打开并将用户带到视图。
但是,如果您实际上有很多向用户发送文档链接的应用程序,那么您可能希望寻找一种解决方案,该解决方案可以安装在您的 Domino 服务器上并自动为所有应用程序处理此问题,而无需更改任何代码。一家名为 Genii Software 的公司有一款名为 CoExLinks Fidelity 的产品可以做到这一点。