Marc,

In a nutshell, yes you're correct.  If you write a mailet that consumes a
message (James should not continue processing the message), then you need to
set the state to Mail.GHOST.

I think there are just as many mailets that will want the message to
continue processing as consume the message, so I don't see a compelling
reason to change the behavior.  That said, it would be good to add some
explanation of this somewhere... where exactly I'm not sure though.

Serge Knystautas
Loki Technologies - Unstoppable Websites
http://www.lokitech.com/
----- Original Message -----
From: "Marc Chamberlin" <[EMAIL PROTECTED]>
To: "james-user" <[EMAIL PROTECTED]>
Sent: Thursday, May 23, 2002 6:00 PM
Subject: Mailets repositories config and GHOST


I have been doing some experimentation and digging around on writing mailets
and have  a design question.... First, let me state that my mailets are
designed to respond based on a match of the mail recipient's name, i.e. a
mail sent to [EMAIL PROTECTED]  .   Given the basic layout of
config.xml, I set it so that I, the postmaster, would be notified of any
errors that occurred, or if a message was marked as spam. When I sent a mail
to one of my mailets, the mailet handles the mail message OK, but the mail
eventually gets passed on from the transport processor to the error
processor and I the postmaster get notified that an error occurred in
processing the mail/mailet. EVEN THOUGH no error really occurred. This is
because the mailet id is not really a registered user.

To get around this, I then tried adding the mailet's recipient name to my
list of local users. This stopped the error report to the postmaster, as
expected, but the drawback is that now every mail message sent to my mailets
gets stored in the database, awaiting the "user/mailet" to pick it up...
Since that won't ever happen, the net result will be an ever increasing
storage of mail ,sent to mailets, into the database. That doesn't sound like
a good design either...

I dug further and took a look at the class ToRepository because that mailet
has a boolean parameter in the config.xml file called "passThrough" and it
aroused my suspicison. In the service method of ToRepository I discovered
that if the passThrough parameter is false, then the Mail state is set to
Mail.GHOST  Is this the proper way for a mailet to consume a Mail message
and stop the Mail message from being passed on from one processor/mailet to
another?  If not, maybe some kind soul will give me a bit of guidance here,
as I am a bit confused... ;-)

If my suspicions are correct, and the Mail state needs to be set to
Mail.GHOST then maybe this is a design issue that should be refereed to the
James developers. I would argue that the GenericMailet class ought to supply
a default implementation of the passThrough parameter so that this behavior
could be inherited in subclassed Mailets....  (I am really scared of my
mailets knowing about ghosts!   ;-)   )

     Marc Chamberlin.....

----------------------------------------------------------------------------
------------------------------------
Do you think the software industry will ever make software that is as easy
and reliable for a user to use
as the automobile industry makes a car easy and reliable for a user to
drive?
----------------------------------------------------------------------------
------------------------------------
A man said unto the universe -  "Sir, I exist!"
"However," replied the universe  "I do not see where that creates in me a
sense of an obligation."
          - Stephen Crane


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to