Introduction
This article tries to give a basic idea on how to send mails through Lotus Notes using Power Builder. This method uses the OLE object technique. Here, we use Lotus Notes' inbuilt classes to perform the required functions. We create objects of these classes as OLE objects. To know more about the Lotus Notes classes, please explore the following link.
Note
- This code does not include proper error handing.
- This code was tested in Power Builder 10.0 (Build 4510) and Lotus Notes 6.5.
- Before running the code, please ensure that Lotus Notes is opened using the user machine procedure.
The following procedure uses the OLE object technique to send mails through Lotus Notes. The following OLE objects must be declared:
- Notes session object ("
notesSession
")
- Notes database object ("
notesDatabase
")
- Notes document object ("
notesDocument
")
- RTF object ("
notesRichTextItem
") � this object is used to create attachments in Notes.
Step 1: Creating the connection to Lotus Notes
First, a connection to Lotus Notes has to be made using the "ConnectTONewObject
" command.
notesSession = Create oleobject
notesSession.ConnectTONewObject("Notes.Notessession")
Step 2: Connecting to the database
After a session has been created with Notes, a database has to be opened. This is done by the "GetDatabase
" command.
The GetDatabase
method creates a NotesDatabase
object that represents the database located at the server. The first parameter is the server name and the second parameter is the username. Usually, we have to specify the server and the user name. Giving these as blank will connect to the default server.
Syntax
For the default server connection:
notesDatabase = notesSession.GetDatabase("","")
For other databases:
notesDatabase = notesSession.GetDatabase("<SERVER >"," <USERNAME >")
After connecting to the database, the mailbox has to be opened. This is done using the "OpenMail
" command. The OpenMail
method finds the current user's mail server and the database in the notes.ini file and opens it. It is a good practice to first check whether the current user�s database is open and then open it if it's not.
IF NOT notesDatabase.IsOpen THEN
notesDatabase.OpenMail()
END IF
Step 3: Creating the document
After the database has been opened, a new Notes document has to be created (in Notes, a new mail is represented as a document). This is done using the "CreateDocument
" command.
The CreateDocument
method creates a document in the database and returns a NotesDocument
object that represents the new document.
notesDocument = notesDatabase.CreateDocument
Setting the properties
Form
Set the Form
to "Memo
" so that its recipient can read it as a mail memo:
notesDocument.Form = "Memo"
Subject
Use the subject
property to set the subject of the mail:
notesDocument.Subject = "Hello"
Body
The body of the mail can be treated as a rich text item. Creating a new rich text item in a document is done using the "CreateRichTextItem
" command.
The CreateRichTextItem
method creates a new rich text item in a document, using a name you specify, and returns the corresponding NotesRichTextItem
object:
notesRichTextItem = notesDocument.CreateRichTextItem("Body")
After creating the RTF object, the text can be appended to the body of the mail using the "AppendText
" command.
NotesRichTextItem.AppendText("Here comes the body of the mail")
Attachment
Attachments can be added to the RTF object using the "EmbedObject
" command.
NotesRichTextItem.EmbedObject*(1454, "", "<Attachment Path>", "")
This command will add only one attachment to the mail body. To add more attachments, we need to reuse the same command. The third parameter would be blank and the first parameter would be set to 1454.
For example:
NotesRichTextItem.EmbedObject(1454, "", "C:\Attachment1.doc", "")
NotesRichTextItem.EmbedObject(1454, "", "C:\Attachment2.doc", "")
Recipients setup
The recipient�s mail IDs are in the form of a string. In the case of multiple recipients, an array of strings should be used.
See the example below to set-up multiple recipients:
String Recipient_arr[]
Recipient_arr[1] = recp1.one@tcs.com
Recipient_arr[2] = recp2.two@tcs.com
In order to set this list as the "To" list, use the "SendTo
" property:
NotesDocument. SendTo = Recipient_arr
In order to set this list as the "CC" list, use the "CopyTo
" property:
NotesDocument.CopyTo = Recipient_arr
In order to set this list as the "BCC" list, use the "BlindCopyTo
" property:
NotesDocument.BlindCopyTo= Recipient_arr
Other properties of the document object
Reserved Field Name |
Values |
Comments |
DeliveryPriority |
L, N, H |
Values correspond to: low, normal or high-priority. |
DeliveryReport |
N, B, C, T |
Values correspond to: none, only on failure, confirm delivery, trace entire path |
Encrypt |
1, 0 |
Use 1 to encrypt mailed documents. |
ReturnReceipt |
1, 0 |
Use 1 to send a receipt when the document is opened by the recipient. |
Sign |
1, 0 |
Use 1 to add an electronic signature to the fields. (Only applicable if a form also contains sign-enabled fields.) |
SaveMessageOnSend |
True , False |
If true the document will be saved to the send item list. |
PostedDate |
Today�s date time |
In PB, this can be retrieved using the "NOW " function. |
Note: Here, even the numeric values should be set as characters, e.g.:
NotesDocument.ReturnReceipt = �1�
Saving the document
The Save
method is used to save any changes made to the document.
Example
NotesDocument.Save(TRUE, FALSE ,TRUE)
Syntax
notesDocument.Save( force, createResponse [, markRead ] )
Parameters
force
Boolean. If True
, the document is saved even if someone else edits and saves the document while the script is running. The last version of the document that was saved wins; the earlier version is discarded. If False
, and someone else edits the document while the script is running, the createResponse
argument determines what happens to the document.
createResponse
Boolean. If True
, the current document becomes a response to the original document (this is what the replicator does when there's a replication conflict). If False
, the save is canceled. If the force
parameter is True
, the createResponse
parameter has no effect.
markRead
Boolean. If True
, the document is marked as read. If False
(default), the document is not marked as read.
Step 4: Sending the document
When the document is prepared, it is sent using the "Send
" command.
Syntax
NotesDocument.Send(FALSE)
Now, the process of sending the mail is completed.
Step 5: Cleanup
After sending the mails, the user needs to free the memory and close all the connections. This involves disconnecting the session object and destroying the OLE objects:
notesSession.close()
notesSession.DisconnectObject()
DESTROY NotesSession
DESTROY NotesDatabase
DESTROY NotesDocument
DESTROY NotesRichTextItem