Set rules for incoming mail and resend a notification using lotusscript

Posted on 2003-10-25
Last Modified: 2013-12-18
HI all,
  I am trying to replicate the existing Email rules... agent to suit my needs. I am trying to call a registration window using a C API when an mail arrives with a particular subject. Existing rules settings doesnt provide me that kind of solution. I have gone through the complete source code.
I have found that it contructs a simple formula stores it in a formula field to perform the action, I want to use lotusscript in the same place.I also say agentlog.logaction("is a new note") what does that mean...
So I would like to know the complete working of hidden agents, like when and how they are triggered... what is the exact background process that is happening. This is quite urgent. If someone could help me I will be very thank full. I tried to search about agents in and out on the net but everything just explains the basics and some server issues. This agent still lies a mystery to me.

Please help,
Thanks in advance
Question by:ultimatewinner
  • 6
  • 5
LVL 31

Expert Comment

ID: 9621539
I think you are best off just writing a "before new mail is delivered" agent.

The existing rules do not run via an agent.  The router runs them (off the CalendarProfile profile document) as it delivers the messages.

If you want to do something similar, you will have to use the extension manager to hook any database write calls, see if they are coming from the router, and running your rules.  Mightbe easier to just check if the destination DB is in the mail OS disk directory.

As far as a construct for storing the LotusScript, let me suggest the following.  I believe that using the API you can call an agent, and provide it either DocumentContext or UnprocessedDocuments.  So, set it up that way, hand it unprocessed documents, and it will run as you wish.

At this point, you've essentially duplicated teh functionality of "before new mail is delivered," as I mentioned.

Ah, but you want to make it configurable for users?  That is still possible.  The Execute statement in LotusScript will execute arbitrary code form a string.  It has access to global vaiables, so set up UnprocessdDocuments as a global, or, loop through the docs yourself, and set a global doc variable before calling each bit of LotusScript in turn.

Expert Comment

ID: 9639976
HI ,
First I tried thought of writing after new mail arrives agent... But since it is new with release 5 I dropped that idea. I wanted it to be compatible both for versions 4 and 5. Now I have changed my mind. I want it to work atleast for one version. I am going ahead with it... I dont know I am stuck up in one place where I process multiple conditions. Where do I get this conditions from. LIke from the rule processed... How do I select the conditions...
This is a little immediate requirement. Some one please help
LVL 31

Accepted Solution

qwaletee earned 125 total points
ID: 9648742
Here is a little example

Dim actionToTake as string 'MOVE folder-name or COPY folder-name.  Delte would be via MOVE (%Trash)
Dim docToProcess as notesDocument
Dim ruleList() As String

Sub SetUpRules
  Redim ruleList(2)
  ruleList(0) = |
    If instr(lcase(docToProcess.getItemValue("Subject")(0)),"SPAM") <> 0 Then
       actionToTake = "MOVE ($Trash)"
    End If
  ruleList(1) = |
    If instr(lcase(docToProcess.getItemValue("From")(0)),"the_boss") <> 0 Then
       actionToTake = "COPY Folder-for-boss-eMail"
    End If
  ruleList(2) = |
    If instr(lcase(docToProcess.getItemValue("From")(0)),"mail_list") <> 0 Then
       actionToTake = "MOVE Hold-for-later"
    End If
End Id
Sub Initalize
  Dim s as new notesSession
  DIm db as notesDatabase
  Set db = s.currentDatabase
  Dim docs as notesDocumentCollection
  Set docs = db.unprocessedDocuments
  Dim docToProcess as notesDocment
  Set docToProcess = docs.getFirstDocument(doc)
  DO Until Doc Is Nothing
    ForAll rule in ruleList
      Execute rule
      If actionToTake <> "" Then
        documentToProcess.putInFolder Mid$(actionToTake,5)
        If left(actionToTake,4) = "MOVE" Then
          documentToProcess.RemoveFromFolder "($Inbox)"
        End If
      End If
    End FOrall
    set docToProcess = docs.getNextDocument(docToProcess)
End Sub

Netscaler Common Configuration How To guides

If you use NetScaler you will want to see these guides. The NetScaler How To Guides show administrators how to get NetScaler up and configured by providing instructions for common scenarios and some not so common ones.


Author Comment

ID: 9652003
I would say from my heart that was one excellent piece of code. I am working on it. I will get back as soon as I finish my complete code...
LVL 31

Expert Comment

ID: 9657773
There are a couple of bugs in it, go find 'em!

LVL 31

Expert Comment

ID: 9657783
By the way... is ultimatewinner the same as lotusnotesnewbie?

Author Comment

ID: 9659116
Ya I did find them one was a spelling mistake, in notesdocment and the other was getfirstdocument(doc) :-))

Author Comment

ID: 9659173
Both of us belong to the same team struggling with a similar kind of problems as both of us are brand new to lotus notes and dealing with something quite big :-)) .Does that clarify you doubt.
LVL 31

Expert Comment

ID: 9659174
Well, those are syntac errors, not bugs.  Look for the bugs.  Let me know if the code works.

Hints: Don't let your kids set off fireworks, it is dangerous, and can do things like displacing limbs.  If they ignore the rule, don't let anger get the upper hand; your kids have a lower sense of proportion, and you have to accomodate that.

Author Comment

ID: 9659253
What was that hint for... Ok I know Lotus Notes is highly sensitive and I wont be pressurising it too much, I have experienced too much of crashes already. I know I have every reason to compromise with LotusNotes
LVL 31

Expert Comment

ID: 9659270
Hint was to help find bugs.

Never mind, the bugs are really minor, and will not affect the basic way the system works.

Author Comment

ID: 9830754
Thank you so much qwaletee. My rules are doing just good. Still I am doing unit testing on it. But I have come this far just with the start up that you gave. I have literally fought over it and have come this far.
My rules work great even with multiple conditions.
But as you mentioned before what are those small bugs... I am not sure whether I have resolved those. If you could tell me I will reconfirm so that I will be even more confident.

Thank you so much
ultimatewinner :-)

Featured Post

NAS Cloud Backup Strategies

This article explains backup scenarios when using network storage. We review the so-called “3-2-1 strategy” and summarize the methods you can use to send NAS data to the cloud

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

You’ve got a lotus Domino web server, and you have been told that “leverage browser caching” is a must do. This means that we have to tell the browser everywhere in the web to use cache. In other words, we set (and send) an expiration date in the HT…
Notes Document Link used by IBM Notes is a link file which aids in the sharing of links to documents in email and webpages. The posts describe the importance and steps to create a Lotus Notes NDL file in brief.
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…
A short tutorial showing how to set up an email signature in Outlook on the Web (previously known as OWA). For free email signatures designs, visit If you want to manage em…

803 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question