Questions about Rev/Transcript vs. other toolkits

Alex Tweedly alex at tweedly.net
Wed Aug 11 18:38:20 EDT 2004


At 15:01 11/08/2004 -0700, Richard Gaskin wrote:

>Alex Tweedly wrote:
>>Actually, I don't think RR excels at network and internet; it does them 
>>OK, but without broader library support it can't be said to excel. (e.g. 
>>NNTP, NTP, IMAP, POP3, email header parsers, Mime-type handling, etc.). 
>>Any of those could built in RR (perhaps more easily than in many other 
>>languages), but until they are supported in the standard package, or in 
>>well organized add-ons, RR is still lagging.
>
>People still use Usenet?  I thought the spammers drove them all away. ;)

That's one reason you might need a scripting language - to guard against 
Spam :-)


>There's a POP library available -- does it not also handle POP3?

I'm sure it will - but I couldn't find a POP library. (so it's either not 
in the standard package, or it's not well documented, or it's not in a 
"well organized add-on").

>What specific challenges have you encountered with parsing email headers, 
>and what do you need to do with MIME types?

None - since I didn't find a POP3 library, or an email/mime handling lib I 
did the project in a different language rather than RR, so didn't have any 
specific challenges.

>How are those handled in other languages?

Can't answer in general, but in Python there's convenient POP3 library, so 
you do something like

import poplib
MAIL = poplib.POP3("mail.tweedly.net")
MAIL.user("username")
MAIL.pass_("password")

messageList = MAIL.uidl()[1]

for msg in messageList:
     msgNum, msgUID = msg.split()
     MAIL.retr(msgNum)
   etc.

to handle a particular email, you use the email library
import email
emailmessage = email.message_from_string(theMessageFromPOP3Above)

and then you can conveniently retrieve the headers
   headerValue = emailmessage.get('headername')
and parse them
   who, emailAddr = email.Utils.parseaddr(msg.get('from'))
and (in a similar way) you can walk through each part of the message using 
simple get() and gettype() functions, such as
if p.get_main_type() == "image":
             image = p.get_payload(decode=1)
             fname = p.get_filename()
which not only extract the name and payload, but decodes it for you, ready 
to write to a file.

Summary:
  I could write any one of these functions in RR/Transcript just by reading 
the RFCs and putting in some effort.
  I could write all of them (adequately, maybe not well) given enough time.

But I have finished the project in question in the time it would take me to 
read through rfc-2822, far less implement it.

-- Alex.


More information about the use-livecode mailing list