Joomla Mail To timeout: “questa e-mail non è stata inviata correttamente”
La funzione “Invia a un amico” disponibile negli articoli di Joomla 1.5 potrebbe darvi un errore durante l’invio nel caso siate troppo veloci.
Il messaggio di errore che compare è “Questa e-mail non è stata invata correttamente”
Nel resto dell’articolo vediamo perchè succede e come risolverlo.
Invia a un amico
In Joomla 1.5, nelle preferenze degli articoli, è possibile abilitare una o più funzioni tra le seguenti:
- crea pdf
- stampa
- invia a un amico
Tutte queste funzioni possono essere visualizzate come icone o testo, e il loro funzionamento è abbastanza intuitivo.
In particolare, la funzione “Invia a un amico” apre una finestrella aggiuntiva con alcuni campi da compilare, tra cui il proprio nome e e-mail. l’e-mail del destinatario e l’oggetto.
Il corpo del testo verrà invece automaticamente compilato con un link all’articolo che stiamo leggendo e che abbiamo voluto condividere.
Ora provate: se siete abbastanza veloci (meno di 20 secondi) a compilare tali campi e provate l’invio, vi darà errore. Se fate con più calma, il messaggio partirà correttamente.
Antispam
Il problema nasce da una misura pensata per evitare l’abuso della funzione di invio, soprattutto da parte di script automatici.
Funziona cosi: nel momento in cui si apre il popup, viene rilevata l’ora attuale e salvata in una variabile temporanea. Nel momento in cui premete Invio, viene rilevata nuovamente l’ora, e se non sono passati almeno 20 secondi, vi risponde picche.
L’idea in sè non è malvagia.
Tuttavia, la scelta di quei 20 secondi è discutibile. Se state mandando il messaggio a un destinatario noto e vi fate quindi aiutare dal sistema di autocompletamento del browser, il tempo per riempire la form può essere di soli pochi secondi.
Inoltre, il dato non è configurabile, ma è scritto direttamente nel codice.
Soluzione
Se vogliamo modificare questo comportamento, l’unica soluzione è aprire il codice e modificare il valore.
Aprite quindi il file
/components/com_mailto/controller.php
e attorno alla riga 20 vedrete questa istruzione
define(‘MAILTO_TIMEOUT’, 20);
Come si può ben immaginare, questa è la riga che definisce il “TIMEOUT” che verrà poi usato come intervallo minimo che deve passare tra l’apertura della finestra e l’invio del messaggio.
Settare a piacere, ricordandosi però che abbiamo modificato un file del core di Joomla; quindi dopo ogni aggiornamento sarà il caso di controllare che la nostra modifica non sia stata sovrascritta.