Benvenuti su htDOCS, la vetrina web di Alessandro Buzzoni, per saperne di piu' e per i tuoi commenti segui il link





30 Set 2008 » Email This Post

WP-Email: An Error Has Occured: Your Remarks is Invalid

Ho da poco installato il Plugin WP-Email per Wordpress. L'ho già usato in passato per altri progetti e ne sono molto soddisfatto.

In pratica vi permette di inviare il link di un articolo del Blog ad un amico mezzo posta elettronica. Il tutto molto semplicemente compilando una form.

Adattare lo stile della form al proprio layout non è semplice, soprattutto per chi come me utilizza uno sfondo scuro. Molto più rapido farlo se si usa il template di default.
A peggiorare le cose a noi italiani (e non solo) è il filtro antispam presente all'interno del plugin. Tale filtro infatti impedisce di utilizzare la form se nel campo "Remark" (il campo in cui è possibile inserire un piccolo messaggio da abbinare alla mail) vengono digitati caratteri considerati non validi. Tra i caratteri bannati si trova anche la stringa "cc" solitamente usata nei programmi come Outlook per descrivere il campo Copia per Conoscenza.

Attenzione quindi al testo che allegate alla mail, vi sono proibite tutte le parole che contengono la doppia C (vecchio, cucchiao, becchino....). Vi è modo fortunatamente di bypassare questo ostacolo, e senza neanche troppo sbatti. Bisogna agire su 3 file presenti nella cartella del plugin.
Aprite il 1° file: email-js.js e cercate la funzione is_valid_remarks:

// Check Remarks
function is_valid_remarks(remarks) {
    var remarks = trim(remarks);
    var injection_strings = new Array('apparently-to', 'cc', 'bcc', 'boundary', 'charset', 'content-disposition', 'content-type', 'content-transfer-encoding', 'errors-to', 'in-reply-to', 'message-id', 'mime-version', 'multipart/mixed', 'multipart/alternative', 'multipart/related', 'reply-to', 'x-mailer', 'x-sender', 'x-uidl');
    for(i = 0; i <injection_strings.length; i++) {
        if(remarks.indexOf(injection_strings[i]) != -1) {
            return false;
        }
    }
    return true;
}

Trasformatela eliminando la doppia C contenuta nell'array: 'cc' ottenendo quindi la stessa funzione così scritta:

// Check Remarks
function is_valid_remarks(remarks) {
    var remarks = trim(remarks);
    var injection_strings = new Array('apparently-to', 'bcc', 'boundary', 'charset', 'content-disposition', 'content-type', 'content-transfer-encoding', 'errors-to', 'in-reply-to', 'message-id', 'mime-version', 'multipart/mixed', 'multipart/alternative', 'multipart/related', 'reply-to', 'x-mailer', 'x-sender', 'x-uidl');
    for(i = 0; i <injection_strings.length; i++) {
        if(remarks.indexOf(injection_strings[i]) != -1) {
            return false;
        }
    }
    return true;
}

Salvate il file, selezionate tutto il testo contenuto ed aprite questo sito: http://dean.edwards.name/packer/

Incollate il testo nel box in alto, flaggate i 2 checkbox sulla destra e premete il tasto Pack.
A questo punto selezionate e copiate il testo che appare nel box in basso ed aprite il file email-js-packed.js incollandovelo dentro. Salvate e chiudete il file.

Aprite infine il file wp-email.php e cancellate la doppia C anche li. L'array con le stringhe bannate lo trovate sotto alla dicitura

### Function: Check Valid Remarks (Ensure No E-Mail Injections)

Riuppate i 3 file sul server e avete finito. Se ti è stato utile questo articolo invialo ad un'amico con il plugin appena descritto » Email This Post

• Autore: Aless{a}ndro
• Archiviato in: Wordpress

5 Commenti Pubblicati

  1. 1

    Cesare Bramante dice:

    Ma si puo configurare per inviare una mail solo ad un determinato indirizzo?
    Grazie


  2. 2

    Aless{a}ndro dice:

    Ciao, non ho capito la tua esigenza. Vorresti che la funzione WP Email inviasse l'articolo ad un account definito in precedenza? Se si, che utilità avrebbe?
    Lo scopo è quello di permettere al visitatore della pagina di inviare l'articolo ad un amico potenzialmente interessato. Come proprietario del sito come puoi predeterminare l'account al quale il tuo visitatore vuole inviare il post?
    ciao


  3. 3

    Cesare Bramante dice:

    Grazie per la cortesia e la risposta.
    Il mio obiettivo è creare una lista di indirizzi e magari lasciando un campo libero.
    Ovvero l'articolo deve essere reinviabile al sito, per comunicazioni o preventivi o inviabile a terzi per conoscenza.
    Il che significa aggiungere oltre alle normali funzioni di wp-mail la possibilità di inoltro a persone specifiche.
    Grazie mille.


  4. 4

    Aless{a}ndro dice:

    Ciao Cesare, quello che vuoi realizzare è possibile certamente. Io ad esempio nella pagina "Contact" uso uno script che invia il messaggio del visitatore al mio indirizzo di posta (o a più indirizzi di posta predefiniti).
    La cosa non è complicata concettualmente, ma lo può essere nella pratica. Bisogna individuare la parte preposta all'invio mail del pgluin WP-EMAIL, e aggiungere gli indirizzi di posta a cui vuoi recapitare il messaggio (oltre a quello che scriverà il visitatore).
    Non mi è possibile al momento occuparmi della cosa e seguirti in questa modifica. Se non erro il file che gestisce il tutto si chiama wp-email.php (lo trovi all'interno della cartella del plugin). Direi di partire da li.....


  5. 5

    Roby dice:

    Ciao, ho provato wp-mail, a parte il fatto che non mi appare sull'articolo l'iconcina e-mil per l'apertura del pop-up e il conseguente invio con dati mail ecc, forse manca qualche stringa che non riesco a trovare, ma mi basterebbe un sistema anche senza commento... è possibile?
    Grazie e scusa il disturbo


Lascia un commento


Top