2013-03-27 8 views
8

Recentemente ho appreso che i client webmail come Gmail eseguiranno modifiche alle email HTML, ad esempio aggiungendo target="_blank" ai tag <a>.Come posso impedire a Gmail di rimuovere i valori dagli URL?

Ho anche scoperto che si verificano anche altre alterazioni. Quando invio un'email HTML a Gmail (e probabilmente ad altri client di posta elettronica) dal mio script PHP, i valori delle variabili inclusi nell'URL di qualsiasi collegamento vengono eliminati. Così, per esempio, questo è il valore che sto impostando nel mio codice PHP:

$mailContent = '<p><a target="_blank" href="https://example.com/confirmation.html?verification=x1x1x1x1x1x1x1x&[email protected]">click here to go to the web site and activate your account!</a></p>'; 

Ma quando l'e-mail viene ricevuta in Gmail, il codice HTML viene fuori in questo modo:

<p><a target="_blank" href="https://example.com/confirmation.html?verification=&email=">click here to go to the web site and activate your account!</a></p> 

Il i valori x1x1x1x1x1x1x1x e [email protected] sono stati rimossi dal tag <a>.

Come proteggere i valori delle variabili che voglio passare all'URL in modo che Gmail non li rimuova?

+1

prova 'url_encode'ing il valore email – Crisp

+0

puoi modificare il tuo post e includere il codice php, per mostrare come accedi a Gmail? grazie –

+0

@ alex-shesterov: Non accedo a Gmail da PHP. Gmail agisce sull'e-mail che riceve. – Questioner

risposta

3

Fare clic su Visualizza originale/fonte sul messaggio in Gmail per vedere se gli URL sono come dovrebbero. Se è così, sai che il problema è come Gmail sta formattando il messaggio per la tua visualizzazione. Se è mutilato anche nella fonte, mi chiedevo se c'è qualcosa nella tua pagina web/php/CMS (ne usi uno) che cambia il codice.

Si dovrebbe provare URL-encoding come ha detto @Crisp. Ecco lo W3 reference.

1

Questa potrebbe non essere la risposta perfetta, ma se la tua applicazione lo consente, ho usato gli abbreviazioni URL un numero di volte.

http://goo.gl/ è il mio preferito perché l'API è super facile da implementare e google è molto veloce. Ho una funzione in una classe e ho appena eseguito il mio URL attraverso di essa e inviare il ritorno ovunque mi serva.

+0

+1 per una soluzione non standard e non perfetta ma sempre funzionante) –

+0

nota che alcuni filtri antispam contrassegnano le email utilizzando gli abbreviazioni URL come spam. Non so se Google contrassegnerà il proprio URL come uno spam – Michael

0

Emailing in html utilizza Quoted-printable Codifica. Il problema con $ mailContent è che "=" deve essere rappresentato da = 3D

Prova ad aggiungere questo: $ mailContent = quoted_printable_encode ($ mailContent);

Problemi correlati