Corso di Rebol - Lezione 2
Torna all'elenco delle lezioni Le email con REBOL

Il modo più semplice per inviare una email tramite REBOL è usare la parola 'send che richiede due argomenti obbligatori, cioè una parola di tipo email!, contenente l'indirizzo del destinatario e una parola di tipo string! che contiene il messaggio in formato testo.
Questo è l'esempio "ufficiale" probabilmente scritto verso maggio 1999:

send luke@rebol.com "Use the force"

che può essere scritto in modo più prolisso nel seguente modo:

destinatario: luke@rebol.com   ; il valore è di tipo email!,
                                  quindi non servono le doppie virgolette
messaggio: "Use the force"     ; il valore è di tipo string!
send destinatario messaggio 

ed ha come risultato di inviare un messaggio contenente una serie di header RFC predefiniti, con la data dell'istante in cui si esegue la parola 'send e come oggetto del messaggio, al massimo, i primi 50 caratteri della prima riga del messaggio. Naturalmente è necessario avere impostato correttamente il sistema per quanto riguarda il server SMTP e l'eventuale proxy (che in genere per l'email è necessario solo se si accede ad Internet tramite un firewall o una rete locale), cosa che viene fatta automaticamente all'avvio di REBOL tramite lo script %user.r.

Richiedendo l'help relativo a 'send si può vedere una breve descrizione delle sue possibilità di utilizzo (in Inglese):


help send
Send a message to an address (or block of addresses)
Arguments:
    address -- An address or block of addresses (email block)
    message -- Text of message. First line is subject.
Refinements:
    /only -- Send only one message to multiple addresses
    /header -- Supply your own custom header
        header-obj -- The header to use (object)

Una caratteristica interessante è quella di poter inviare lo stesso messaggio a più persone semplicemente racchiudendone gli indirizzi in un block!, in tal caso è conveniente usare i "refinements" che servono per specificare un comportamento diverso della parola, in particolare l'opzione /only che, sfruttando una caratteristica del protocollo SMTP, permette di inviare un unico messaggio e lascia che sia il server a copiarlo ai vari destinatari:
Gli indirizzi possono essere presenti sia in modo esplicito, sia in modo implicito, cioè come valori di parole racchiuse tra parentesi (ciò grazie all'uso di 'reduce):

send/only [ luke@rebol.com (secondo-destinatario) (terzo-destinatario) ] "messaggio di prova"

Normalmente si desidera inserire come soggetto una frase diversa dalla prima riga del messaggio (che di solito è un saluto), per cui è necessario usare l'opzione /header fornendo una parola di tipo object! contenente tutti gli elementi dell'header che sono necessari. Usando come modello l'object! system/standard/email è sufficiente specificare solo gli elementi dell'header che si vuole personalizzare perché gli altri verranno inseriti automaticamente (NOTA: in REBOL versione 2.1.2 è necessario specificare anche il mittente nel campo from:), per cui l'esempio precedente può essere modificato così:

send/header/only [ luke@rebol.com (secondo-destinatario) (terzo-destinatario) ] "messaggio di prova" make system/standard/email [ from: system/user/email subject: "L'oggetto del messaggio" ]

Per vedere il contenuto dell'header predefinito si può digitare:

print mold make system/standard/email [ ]

è possibile assegnare i valori desiderati a tutti gli elementi presenti ed è possibile aggiungerne altri (magari di tipo X-header).

Parole attinenti ai messaggi email:

email!identifica il tipo di dati "indirizzo di posta elettronica"
email?verifica se la parola passata come argomento è di tipo email!
import-emailesamina una parola di tipo string! contenente un messaggio completo di header e restituisce un block! contenente le parti del messsaggio
net-erroruna funzione "mezzanina" per generare un errore
parse-email-addrscrea un block! di valori email! esaminando l'argomento di tipo string! (è intesa per le liste di indirizzi tipo to:, cc: o bcc:)
parse-headeresamina una parola di tipo string! contenente l'header di un messaggio costruendo un block! con i valori letti o quelli forniti come default
parse-header-dateesegue la funzione inversa rispetto a to-idate
resendun modo semplificato per inviare un messaggio email (non aggiunge nessun tipo di header)
sendinvia ad un singolo indirizzo o ad una serie di indirizzi il contenuto di una parola di tipo string! (di cui al massimo 50 caratteri della prima riga sono usati come soggetto) ad un singolo indirizzo o ad un block! di indirizzi
set-netimposta l'indirizzo email, i server POP e SMTP e il proxy
set-usercrea il file user.r contenente anche le impostazioni per 'set-net
to-emailrestituisce un valore di tipo email! e contenuto uguale all'argomento fornito, se possibile
to-idatetrasforma un valore di tipo date! in una stringa nel formato "ggg, G mmm aaaa hh:mm:ss fuso-orario" adatta ai messaggi email


<--Prev Index Next-->

Copyright AMiWoRLD