Set rules for incoming mail and resend a notification using lotusscript

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
ultimatewinnerAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

qwaleteeCommented:
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.
0
lotusnotesnewbieCommented:
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
0
qwaleteeCommented:
Here is a little example

(Declarations)
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)
    If
  Loop
End Sub

0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Cloud Class® Course: Ruby Fundamentals

This course will introduce you to Ruby, as well as teach you about classes, methods, variables, data structures, loops, enumerable methods, and finishing touches.

ultimatewinnerAuthor Commented:
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...
0
qwaleteeCommented:
There are a couple of bugs in it, go find 'em!

:)
0
qwaleteeCommented:
By the way... is ultimatewinner the same as lotusnotesnewbie?
0
ultimatewinnerAuthor Commented:
Ya I did find them one was a spelling mistake, in notesdocment and the other was getfirstdocument(doc) :-))
0
ultimatewinnerAuthor Commented:
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.
0
qwaleteeCommented:
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.
0
ultimatewinnerAuthor Commented:
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
0
qwaleteeCommented:
Hint was to help find bugs.

Never mind, the bugs are really minor, and will not affect the basic way the system works.
0
ultimatewinnerAuthor Commented:
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
Cheers,
ultimatewinner :-)
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Lotus IBM

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.