[Twisted-Python] (newbie!) smtp to message object
exarkun at twistedmatrix.com
exarkun at twistedmatrix.com
Wed Nov 6 07:20:32 MST 2013
On 11:35 am, sangiovanni at nweb.it wrote:
>Il 06/11/13 12:09, Stacey Sern ha scritto:
>>Hi,
>>
>>I also tried to figure out how to deliver one copy of a message
>>instead of one for every recipient for a Twisted server tutorial
>>(ticket #3324) which hasn't yet been finalized. Here's the way I went
>>about it but I'd appreciate comments on the approach as well.
>>
>>For the IMessageDelivery.validateTo method, it generates the real
>>IMessage object when it receives the first recipient. After that, it
>>returns a NullMessage object for each subsequent recipient. The
>>NullMessage object is called for each line received as part of the
>>message but does nothing with it. Then you don't need to change
>>_cbToValidate. Here's you're code with the modifications
>>http://pastebin.com/6nFXiTgK.
>>
>>Stacey
>Hi Stacey,
>thanks for your reply.
>
>I think your approach is cleaner than mine! Thanks!
>My only concern is this loop in smtp.SMTP.do_DATA:
>
>for (user, msgFunc) in recipients:
>[...]
>
>that implies a scan of the whole list of messages (made of the 'real'
>message and of the other NullMessages).
>I don't know how it can really impact on performances, though. I aimed
>at not creating 'fake' messages at all, but it's not clear to me if
>it's even possible without overriding _cbToValidate.
The performance impact of this is going to be minimal.
On a runtime like PyPy, the impact *may* even be zero.
Jean-Paul
>Let's keep in touch!
>
>Fabio
>>
>>
>>
>>On Nov 6, 2013, at 5:08 AM, Fabio Sangiovanni <sangiovanni at nweb.it
>><mailto:sangiovanni at nweb.it>> wrote:
>>>Hello list,
>>>
>>>I'm new to twisted and to python in general, so still deep in the
>>>learning process.
>>>Please forgive any faulty assumptions you'll find in this post :)
>>>
>>>I'm trying to accomplish to the following task: realize a tool that
>>>acts as a proxy between the SMTP domain and the 'objects' domain.
>>>That is: a daemon that listens for SMTP connections (relayed sessions
>>>from Postfix) and bundles everything that belongs to a single session
>>>(envelope sender, envelope recipients, headers, body) into an object
>>>(it will probably become a JSON one day, not decided yet). The aim is
>>>to allow further processing (es. publishing to a queue) of a self-
>>>contained item.
>>>
>>>My (draft) implementation can be reached at
>>>http://pastebin.com/mbRztuid
>>>
>>>My main concerns are:
>>>1) am I using the right classes? My implementation leverages
>>>twisted.mail.smtp, is this correct?
>>>2) I've overridden smtp.SMTP._cbToValidate; I really don't like this
>>>very much (I'd like to leave the protocol untouched) but it's the
>>>only way I've come up with (after several days of experiments :) ) to
>>>have one single payload down the line (in smtp.SMTP.do_DATA), and not
>>>one copy of the message for every single recipient. May this have bad
>>>consequences?
>>>3) what do you think about the overall approach? could it have been
>>>done differently/better?
>>>
>>>Thanks a lot for your help!
>>>
>>>Fabio
>>>_______________________________________________
>>>Twisted-Python mailing list
>>>Twisted-Python at twistedmatrix.com <mailto:Twisted-
>>>Python at twistedmatrix.com>
>>>http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
>>
>>
>>
>>_______________________________________________
>>Twisted-Python mailing list
>>Twisted-Python at twistedmatrix.com
>>http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
>
More information about the Twisted-Python
mailing list