
On Fri, 26 Nov 2004, Jp Calderone wrote:
On Fri, 26 Nov 2004 11:04:44 +0200, bostik@stinghorn.com (Mika Bostrom) wrote:
class RelayMessage(smtp.IMessage): def __init__(self): smtp.IMessage.__init__(self) self.msg =3D []
The above class is the most obvious problem I see here. Interfaces are not meant to be subclassed in this manner. What you really want is something more like:
[codelet snipped] Thank you, this was indeed the case. You also gave a a very solid rule of thumb which will come in handy later on. "Interfaces are not meant to be subclassed." (Yes, cut short; on purpose, as that will be easier to remember.) Your advice also makes a nice example of how to use smtp module as a base.
ESMTP will call getMessageDelivery on its deliveryFactory attribute, now that it isn't None. On the object it returns, it will call receivedHeader, validateFrom, and validateTo. And on the object returned by calling the object returned by validateTo, it will pass the contents of the message being delivered, letting you relay it wherever is appropriate.
This part felt a little like black magic, and my first reaction was that of a scarred Delphi programmer: smelled a bit like excessive nesting. Until I get a better grasp of what actually happens beneath the hood, I'll just consider this a necessary evil. However, at least by your example and fixes the actual reception works. I can carry on experimenting with what/how to do with the mail from thereon.
Hope this helps,
It certainly did. Thank you so much. I may return to list with additional questions if your examples and hints have failed to enlighten me after all. Take care, -- Mika Boström \-/ "World peace will be achieved Bostik@stinghorn.com X when the last man has killed Software slave /-\ the second-to-last." -anon?