Solved

Set rules for incoming mail and resend a notification using lotusscript

Posted on 2003-10-25
12
887 Views
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
0
Comment
Question by:ultimatewinner
  • 6
  • 5
12 Comments
 
LVL 31

Expert Comment

by:qwaletee
Comment Utility
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
 
LVL 4

Expert Comment

by:lotusnotesnewbie
Comment Utility
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
 
LVL 31

Accepted Solution

by:
qwaletee earned 125 total points
Comment Utility
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
 

Author Comment

by:ultimatewinner
Comment Utility
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
 
LVL 31

Expert Comment

by:qwaletee
Comment Utility
There are a couple of bugs in it, go find 'em!

:)
0
 
LVL 31

Expert Comment

by:qwaletee
Comment Utility
By the way... is ultimatewinner the same as lotusnotesnewbie?
0
What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

 

Author Comment

by:ultimatewinner
Comment Utility
Ya I did find them one was a spelling mistake, in notesdocment and the other was getfirstdocument(doc) :-))
0
 

Author Comment

by:ultimatewinner
Comment Utility
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
 
LVL 31

Expert Comment

by:qwaletee
Comment Utility
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
 

Author Comment

by:ultimatewinner
Comment Utility
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
 
LVL 31

Expert Comment

by:qwaletee
Comment Utility
Hint was to help find bugs.

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

Author Comment

by:ultimatewinner
Comment Utility
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

Featured Post

Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

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…
IBM Notes offer Encryption feature using which the user can secure its NSF emails or entire database easily. In this section we will discuss about the process to Encrypt Incoming and Outgoing Mails in depth.
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.
When you create an app prototype with Adobe XD, you can insert system screens -- sharing or Control Center, for example -- with just a few clicks. This video shows you how. You can take the full course on Experts Exchange at http://bit.ly/XDcourse.

763 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

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now