eMail processing with Rebol R3 ?
Trying to find out if Rebol R3 can actually handle POP3 mail? I've found a few examples of code snippets that pretend to be email handlers but they simply wont 'compile' under any Rebol R3 version ! At this stage I'd like some insight into how Rebol R3 -- using the CLI if possible -- can allow me to display some email header info and prompt me to accept or delete the message from my ISP's mailbox. I currently use a simple Ruby program for this task , but would really like to try Rebol R3. Under Linux and or Android. Its also confusing that all to often I find a R3 email 'lead' only to find the code is actually R2!
posted by: dragoncity 5-Nov-2013/19:30:52-8:00
Graham has created some protocols for R3 that you can use for mail: https://github.com/gchiu/Rebol3/tree/master/protocols
posted by: Nick 6-Nov-2013/3:32:48-8:00
Thanks Nick, I'd found these : prot-smtp.r3 , prot-send.r3 & also prot-mail.r3, but cannot make them actually work. From the little documentation enclosed in the code I knocked up the following, to send a email to mself. =========================================================== R E B O L [Title: test-mail.sr3 ] do %prot-smtp.r ;; from prot-smtp.r comments { write smtp://user:password@smtp.yourisp.com compose [ from: me@somewhere.com to: recipient@other.com message: (message) } write smtp://dragoncity:@mail.isp.com.au compose [ from: dragoncity@isp.com.au to: dragoncity@isp.com.au message: { this is a test message from Rebol } ] halt ============================================================= When run this happened : >> do %test-mail.sr3 Script: test-mail.sr3 Version: none Date: none Module: "Rebol 3 SMTP scheme" Version: 0.0.6 Date: 9-Jan-2010 20-Jan-2013 port opened ... === Client event: lookup === Client event: connect connected === Client event: read S: 220 poplet4.per.eftel.com ESMTP Postfix C: EHLO Rebol3 User PC === Client event: wrote === Client event: read S: 250-poplet4.per.eftel.com 250-PIPELINING 250-SIZE 15360000 250-VRFY 250-ETRN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN <<<<< quite along time delay here >> <<<<< checking my email , no message appears, nor rejected message.
posted by: dragoncity 6-Nov-2013/7:50:27-8:00
Notice in the comments of prot-smtp.r: "Where message is an email with all the appropriate headers. In Rebol2, this was constructed by the 'send function" Graham provides this example: message: rejoin [ {To: } recipient@other.com { From: } "R3 User" { <} me@somewhere.com {> Date: Mon, 21 Jan 2013 17:45:07 +1300 Subject: testing from r3 X-REBOL: REBOL3 Alpha where's my kibble?}]
posted by: Nick 6-Nov-2013/9:24:50-8:00
Thanks for your info, Nick. I had noticed that "message:" item , but as I'd already entered that information into the "write smtp....." code I was confused as to why I'd need to reenter it again. :-) I set up a "message:" item as shown in the %prot-smtp.r and tried again, %do test-mail.sr3, with the same result, same messages, a long delay ( about 1 minute ) and then .. nothing... Not making much progress I'm afraid. An observation: I hard coded the date-time info into message:, does Rebol include a function to create that date-time format directly from the system?
posted by: dragoncity 7-Nov-2013/0:21:22-8:00
Have you tried messaging Graham in AltME? He's active there. R2 has a "to-idate" function, which depends on the to-itime function. Since both are mezzanine, you can copy them directly into R3 scripts: to-itime: func [ {Returns a standard internet time string (two digits for each segment)} time [time! number! block! none!] /local pad ][ time: make time! time pad: func [n] [head insert/dup n: form n #"0" 2 - length? n] rejoin [ pad time/hour ":" pad time/minute ":" pad round/down time/second ] ] to-idate: func [ "Returns a standard Internet date string." date [date!] /local str ][ str: form date/zone remove find str ":" if (first str) <> #"-" [insert str #"+"] if (length? str) <= 4 [insert next str #"0"] reform [ pick ["Mon," "Tue," "Wed," "Thu," "Fri," "Sat," "Sun,"] date/weekday date/day pick ["Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec"] date/month date/year to-itime any [date/time 0:00] str ] ] probe to-idate now halt
posted by: Nick 7-Nov-2013/14:04:21-8:00
Notice that both those functions are found in the prot-send.r script (you can get them by typing "source to-idate" and "source to-itime" in R2)
posted by: Nick 7-Nov-2013/17:35:24-8:00
Thanks Nick, I've made my own module by cut&paste the code above. Will try to get in touch with Graham via AltME.
posted by: dragoncity 7-Nov-2013/21:13:36-8:00
Hi guys Use the prot-send.r which needs prot-smtp.r so, first setup your user specific passwords etc in https://github.com/gchiu/Rebol3/blob/master/protocols/prot-send.r#L25 Then do %prot-smtp.r do %prot-send.r then the use is as in R2 send someone@rebol.com "my message" Looks like there is a later version of prot-smtp.r at https://gist.github.com/gchiu/5288312 I also have a prot-pop3.r somewhere ... not sure why I didn't put it up on github yet.
posted by: Graham 8-Nov-2013/2:17:42-8:00
As for what you want to do which is review your messages and delete based on viewing the first few lines, perhaps that is best suited to IMAP. I did write a prot-imap some years ago too https://github.com/gchiu/Rebol3/blob/master/protocols/prot-imap.r but untested since then. Otherwise you're looking at a TOP command for POP3.
posted by: Graham 8-Nov-2013/2:24:51-8:00
R E B O L [Title: "test-mail.sr3" ] do %prot-smtp.r do %prot-send.r isp: "mail.aanet.com.au" idate: to-idate now prin "** internet date :" print idate user: make object! [ name: "brett" ; string! email: dragoncity@aanet.com.au ; email! smtp: isp ; ip address or name pop3: isp ; ip address or name user: "XXXXXXXXXX" ; or esmtp-user pass: "PPPPPPPPPP" ; or esmtp-pass ] print user print "** call Send" send XXXXXXXXX@aanet.com.au "test message" print now halt =========================================================== >> do %test-send.sr3 Script: "test-mail.sr3" Version: none Date: none Module: "Rebol 3 SMTP scheme" Version: 0.0.8 Date: 9-Jan-2010 20-Jan-2013 29-Mar-2013 Script: "REBOL Protocols: Send Email" Version: 2.7.6 Date: 14-Mar-2008 21-Jan-2013 ** internet date :Fri, 8 Nov 2013 20:44:51 +1100 name: "brett" email: XXXXXXXXXX@aanet.com.au smtp: "mail.aanet.com.au" pop3: "mail.aanet.com.au" user: "XXXXXXXXXX" <---- suppressed pass: "PPPPPPPPPP" ** call Send port opened ... === Client event: lookup client state: INIT === Client event: connect client state: INIT connected === Client event: read client state: EHLO S: 220 poplet4.per.eftel.com ESMTP Postfix code: 220 code-group: 2 C: EHLO rebol3 user pc === Client event: wrote client state: AUTH === Client event: read client state: AUTH S: 250-poplet4.per.eftel.com 250-PIPELINING 250-SIZE 15360000 250-VRFY 250-ETRN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN code: 250 code-group: 2 determining authentication methods <----- long wait here 8-Nov-2013/20:45:51+11:00 >>
posted by: dragoncity 8-Nov-2013/5:13:45-8:00
That's very odd, your smtp server does not seem to be responding to the AUTH command. The server should respond with the type of authentication methods supported so that the Rebol client can pick one and then authenticate. What happens when you use Rebol2?
posted by: Graham 8-Nov-2013/13:09:54-8:00
Prot-smtp is actually an esmtp server ie. it expects to authenticate. Looking again at your exchange above, your server doesn't seem to support authentication. So, I would have to remove that part that looks for 250-AUTH from the protocol
posted by: Graham 8-Nov-2013/13:37:16-8:00
Graham, You are correct about authentication ! Looking at my Email Configuration ( I use CLAWS ), authentication is OFF, also I checked my original ISP setup guide and : "If you are receiving Authentication errors double check that you have no SSL or special authentication settings checked in your mail client configuration" I will check their current recommendations, but as my other mail accessing programs function, I guess its unchanged from original install in 2008, Brett
posted by: dragoncity 8-Nov-2013/19:55:12-8:00
Graham, for your info. I currently use POP3 to receive mail, and SMTP to send. I don't know if that's "normal" or not ! Brett
posted by: dragoncity 8-Nov-2013/20:20:51-8:00
|