[Twisted-Python] (newbie!) smtp to message object
Fabio Sangiovanni
sangiovanni at nweb.it
Wed Nov 6 07:32:31 MST 2013
Il 06/11/13 15:20, exarkun at twistedmatrix.com ha scritto:
> 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
Thanks Jean-Paul,
I'll go the way suggested by Stacey, then.
Any other suggestions about my approach?
Thanks again!
>> 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
>>
>
> _______________________________________________
> 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