I got a library of Lotusscript functions and code examples that I find useful and reuse in projects every now and then. Some are very simple and some did require a little or a lot of research and work before I got them working. In this post is an example on how to disable the email signature from Lotusscript.
Problem:
When creating a memo from backend Lotusscript and then showing it to the user using the frontend/UI classes, the user email signature (if enabled) will be inserted at the top of the document, i.e. the body text will be below the signature instead of above it as expected.
Solution:
Disable the signature and then re-enable it as shown in the following code example.
Limitations:
This is only an example on how to disable the user email signature. If you want it inserted at the end of whatever your email contents is (in this example “Hello world!”) you can easily modify the example to read the signature from docProfile and then insert it.
Pre-requisites:
This has been tested in Lotus Notes 6.5.3 but it should work both in previous releases such as R5 and in the later ND7 release.
Write a comment if you have confirmed this working (or not working) in other releases.
Below is a code example that
1) creates a memo using Lotusscript backend classes,
2) disables user email signature,
3) shows the memo to the user using Lotusscript frontend classes, and
4) re-enables the user email signature
Please note that the NotesRichTextItem Update method used in this example is new in ND6.
' ------------------------------------------------
' --- You may use and/or change this code freely
' --- provided you keep this message in your code
' ---
' --- Example by Max Flodén 2005
' --- http://www.tjitjing.com
' ------------------------------------------------
Dim workspace As New NotesUIWorkspace
Dim dbMail As NotesDatabase
Dim docMail As NotesDocument
Dim rtitem As NotesRichTextItem
Dim docProfile As NotesDocument
Dim strProfileEnableSignature As String
'Open users mail database
Set dbMail = New NotesDatabase( "", "" )
Call dbMail.OpenMail
If Not dbMail.IsOpen Then
Call Messagebox("Could not open mail database.", 48, "Error")
Exit Sub
End If
'Create new memo from back end
Set docMail = dbMail.CreateDocument
docMail.Form = "Memo"
docMail.Subject = "Hello"
Set rtitem = New NotesRichTextItem( docMail, "Body" )
Call rtitem.AppendText("Hello world!")
Call rtitem.AddNewline(1)
Call rtitem.Update 'Update method is new in ND6
'Disable signature in users mail profile
Set docProfile = dbMail.GetProfileDocument("CalendarProfile")
strProfileEnableSignature = docProfile.EnableSignature(0)
If strProfileEnableSignature = "1" Then
docProfile.EnableSignature = ""
Call docProfile.Save(True,False)
End If
'Show memo to UI/front end
Set uidoc = workspace.EditDocument(True, docMail,,,True,True)
'Re-enable signature in users mail profile
If strProfileEnableSignature = "1" Then
docProfile.EnableSignature = "1"
Call docProfile.Save(True,False)
End If
Thank you for sharing. I wonder what’s more in your example database =)
Hi,
Thanks for sharing the code, but it doesnt work… Unless I click Ok button in — Tools – preference-signature – and click ok I am not able to see the signature
If you have any idea regarding this
Please Mail me.
Works great in 7.02 – thanks for sharing the code!
Yes ! this trick is working fine !
Thanks a lot, save a lot of time !
docProfile.EnableSignature does not exist in v8.5. Anybody know where is it?
I access the signature here… you also can edit the profile as well using EditProfile…
Dim SigDoc As NotesDocument
Dim db As NotesDatabase
Dim session As New NotesSession
Dim iSigOption As Integer
Set db = session.CurrentDatabase
Set SigDoc = db.GetProfileDocument(“CalendarProfile”)
iSigOption = SigDoc.GetItemValue(“SignatureOption”)(0)
If iSigOption 0 Then ‘if 0 No Signature
If iSigOption = 1 Then ‘1 Plain text Signature
code…
ElseIf iSigOption = 2 Then ‘2 HTML Signature
etc……