Attenzione: il procedimento descritto nell’articolo fa riferimento ad una funzionalità ancora in lavorazione che pertanto potrebbe subire modifiche anche sostanziali in un prossimo futuro.

Nell’articolo precedente abbiamo visto come le ultime build di Opera 10 siano in grado di gestire le Web Mail come client di posta predefinito e vi avevo anticipato che, qualora il vostro provider non fosse fra quelli disponibili, sarebbe stato comunque possibilie aggiungerlo manualmente. Vediamo quindi come aggiungere il nostro provider.

Innanzitutto localizziamo il file webmailproviders.ini che si trova nella cartella \defaults della directory di Opera. Questo contiene la lista di tutti i servizi disponibili nella forma seguente:

[Gmail]
ID=1
URL=https://mail.google.com/mail/?extsrc=mailto&url=%s
ICON=http://mail.google.com/favicon.ico

I meno smaliziati si chiederanno probabilmente cosa significhino esattamente queste stringhe e come usarle.

  • La prima riga indica il nome del provider che verrà visualizzato nel programma. Trattandosi di un file .ini ovviamente è necessario racchiudere il nome fra parentesi quadre.
  • ID indentifica in modo univoco il servizio. E’ necessario usare una numerazione progressiva per i vari servizi.
  • URL è l’indirizzo usato dal provider per gestire il protocollo mailto attraverso la web mail. “%s” è la parte variabile che verrà di volta in volta sostituita con i dati del link mailto che cliccherete (indirizzo, oggetto, ecc…).
    Attualmente sono permessi anche URL Data e Javascript.
  • Icon infine indica il percorso della favicon della web mail.

Alla luce di tutto ciò appare quindi evidente che per poter aggiungere il nostro servizio di posta è necessario conoscere l’indirizzo dell’handler mailto (URL).

Purtroppo però non tutti i provider hanno tale caratteristica, ma possono ugualmente compilare i vari campi automaticamente specificandoli con variabili separate, anzichè con la sola “%s”, secondo questo schema:

  • %t = il destinatario
  • %s = l’oggetto
  • %m = il corpo del messaggio
  • %c = CC’d recipients
  • %b = BCC’d recipients.

Per rendere meglio l’idea analizziamo quindi come dovrebbe essere modificato l’URL nel caso di Gmail:

"http://mail.google.com/mail/?view=cm&fs=1&to=%t&su=%s&body=%m&cc=%c&bcc=%b"

Ancora una volta però i problemi non mancano in quanto, almeno per il momento, Opera non è ancora in grado di gestire questo tipo di URL e bisogna prima trasfromarli in un Data o Javascript URL come nell’esempio seguente:

[Operamail.com]
ID=4
URL=javascript:(function(uri)%7B%0D%0Afunction%20decode(s)%7Btry%7Breturn%20decodeURIComponent(s).replace(%2F%5Cr%5Cn%7C%5Cr%7C%5Cn%2Fg%2C%22%5Cr%5Cn%22)%3B%7Dcatch(e)%7Breturn%20%22Opera%20percent-decode%20error%22%3B%7D%7D%0D%0Afunction%20encode(s)%7Btry%7Breturn%20encodeURIComponent(s)%3B%7Dcatch(e)%7Breturn%20%22Opera%2520percent-encode%2520error%22%3B%7D%7D%0D%0Afunction%20escapeInvalidHH(s)%7Breturn%20s.replace(%2F%25(%3F!%5B0-9A-F%5D%7B2%7D)%2Fgi%2Cfunction()%7Breturn%20%22%2525%22%3B%7D)%3B%7D%0D%0Afunction%20escapeUnsafeHH(s)%7Breturn%20s.replace(%2F%2500%7C%2501%7C%2502%7C%2503%7C%2504%7C%2505%7C%2506%7C%2507%7C%2508%7C%250B%7C%250C%7C%250E%7C%250F%7C%2510%7C%2511%7C%2512%7C%2513%7C%2514%7C%2515%7C%2516%7C%2517%7C%2518%7C%2519%7C%251A%7C%251B%7C%251C%7C%251D%7C%251E%7C%251F%2Fgi%2Cfunction(match)%7Breturn%20encode(match)%3B%7D)%3B%7D%0D%0Afunction%20filterSingleLine(s)%7Breturn%20s.replace(%2F%5Cr%7C%5Cn%2Fg%2C%22%22)%3B%7D%0D%0Afunction%20MailtoURIParser(s)%7Bthis.parse(escapeUnsafeHH(escapeInvalidHH(%22to%3D%22%2Buri.substr(7).replace(%2F%5C%3F%2F%2C%22%26%22))))%3B%7D%0D%0AMailtoURIParser.prototype%3D%7Bparse%3Afunction(dataset)%7Bthis.to%3Dthis.subject%3Dthis.body%3Dthis.cc%3Dthis.bcc%3D%22%22%3Bvar%20ref%3Dthis%3Bdataset.replace(%2F(%5B%5E%3D%26%5D%2B)%3D(%5B%5E%26%5D*)%2Fg%2Cfunction(match%2Chname%2Chvalue)%7Bhname%3Ddecode(hname).toLowerCase()%3Bif(hname%3D%3D%22to%22)%7Bif(hvalue!%3D%22%22)%7Bif(ref.to!%3D%22%22)%7Bref.to%2B%3D%22%252C%2520%22%3B%7Dref.to%2B%3Dhvalue%3B%7D%7Delse%20if(hname%3D%3D%22cc%22)%7Bif(hvalue!%3D%22%22)%7Bif(ref.cc!%3D%22%22)%7Bref.cc%2B%3D%22%252C%2520%22%3B%7Dref.cc%2B%3Dhvalue%3B%7D%7Delse%20if(hname%3D%3D%22bcc%22)%7Bif(hvalue!%3D%22%22)%7Bif(ref.bcc!%3D%22%22)%7Bref.bcc%2B%3D%22%252C%2520%22%3B%7Dref.bcc%2B%3Dhvalue%3B%7D%7Delse%20if(hname%3D%3D%22subject%22)%7Bref.subject%3Dhvalue%3B%7Delse%20if(hname%3D%3D%22body%22)%7Bif(!(hvalue%3D%3D%22%22%26%26ref.body%3D%3D%22%22))%7Bif(ref.body!%3D%22%22)%7Bref.body%2B%3D%22%250D%250A%22%3B%7Dref.body%2B%3Dhvalue%3B%7D%7D%7D)%3Bthis.to%3Dencode(filterSingleLine(decode(this.to)))%3Bthis.subject%3Dencode(filterSingleLine(decode(this.subject)))%3Bthis.body%3Dencode(decode(this.body))%3Bthis.cc%3Dencode(filterSingleLine(decode(this.cc)))%3Bthis.bcc%3Dencode(filterSingleLine(decode(this.bcc)))%3B%7D%2Cformat%3Afunction(s)%7Bvar%20ref%3Dthis%3Breturn%20s.replace(%2F(%25%25)%7C(%25T)%7C(%25S)%7C(%25M)%7C(%25C)%7C(%25B)%7C(%25w)%2Fg%2Cfunction(match%2Ca%2Cb%2Cc%2Cd%2Ce%2Cf%2Cg)%7Bif(a)return%20%22%25%22%3Bif(b)return%20ref.to%3Bif(c)return%20ref.subject%3Bif(d)return%20ref.body%3Bif(e)return%20ref.cc%3Bif(f)return%20ref.bcc%3Bif(g)return%20encode(%22mailto%3A%22%2Bref.to%2B%22%3Fsubject%3D%22%2Bref.subject%2B%22%26body%3D%22%2Bref.body%2B%22%26cc%3D%22%2Bref.cc%2B%22%26bcc%3D%22%2Bref.bcc)%3B%7D)%3B%7D%7D%3B%0D%0Aif(uri.search(%2Fmailto%3A%2Fi)!%3D0)%7Bthrow%20%22Not%20a%20MailtoURI%22%3B%7D%0D%0Avar%20parser%3Dnew%20MailtoURIParser(uri)%3B%0D%0Avar%20compose%3Dparser.format(%22http%3A%2F%2Fmymail.operamail.com%2Fscripts%2Fmail%2FOutblaze.mail%3Fcompose%3D1%26did%3D1%26a%3D1%26to%3D%25T%26subject%3D%25S%26body%3D%25M%26cc%3D%25C%26bcc%3D%25B%22)%3B%0D%0Avar%20a%3Ddocument.createElementNS(%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%22%2C%22a%22)%3Ba.href%3Dcompose%3Ba.click()%3B%0D%0A%7D)(%22%s%22)%3B
ICON=http://www.opera.com/favicon.ico

Chiaramente si tratta di una procedura non alla portata di tutti e che, si spera, presto non sarà più necessaria. Ma se nel frattempo volete cominciare a sperimentare nessuno potrà impedirvelo. 😉