Gmail ha il supporto per ciò che emette registerProtocolHandler() di HTML5.
Esempio:
var compose = "https://mail.google.com/mail/?extsrc=mailto&url=" + encodeURIComponent("mailto:?subject=test");
Questo è ciò che Gmail si aspetta l'uso. Modifica l'inizio per l'URI di composizione specifico del dominio, ovviamente.
Tuttavia, questo carica il modulo di composizione da solo (non integrato con la pagina della posta in arrivo). Quindi, se desideri che il modulo di composizione sia integrato nella pagina della posta in arrivo, devi caricare:
"https://mail.google.com/mail/?compose=1&view=cm&fs=1&to=1&su=2&body=3&cc=4&bcc=5"
. Ma questo richiede di analizzare prima l'URI mailto per ottenere gli hfvalues e correggere la loro codifica percentuale per assicurarsi che siano adatti per inviare un URI HTTP. Vedi sotto per maggiori informazioni su questo.
Ora, ciò che Gmail fa con l'URI di composizione HTML5 è la decodifica in percentuale del parametro url per ottenere l'URI mailto. Quindi, analizza l'URI mailto per ottenere gli hfvalues. Quindi, utilizza questi valori hf per costruire un URI come quello integrato nella posta in arrivo e reindirizzare a esso.
Il problema con il metodo HTML5 di Gmail è che non codifica in percentuale i caratteri "+" negli hfvalues su "% 2B". Il risultato finale è che i caratteri '+' nell'URI mailto (non sono spazi in un URI mailto) vengono visualizzati come spazi nel modulo di composizione di Gmail.
Per aggirare il bug di Gmail, basta fare:
var compose = "https://mail.google.com/mail/?extsrc=mailto&url=" + encodeURIComponent("mailto:?subject=test".replace(/\+/g, "%2B"));
invece.
Il bug è stato segnalato anni fa, ma Gmail si rifiuta di risolverlo.
Come si dovrebbe anche vedere, per l'URI di compilazione integrato nella posta, se si ha l'URI mailto: "oggetto = 1 + 2", è necessario assicurarsi di emettere su = 1% 2B2 nel componi URI e non su = 1 + 2. Quest'ultimo farà sì che uno spazio sia nel campo soggetto invece di '+'. Questa parte non è un bug con Gmail. È così che funziona HTTP.
È possibile vedere la fonte di my Gmail Compose Extension for Opera (decomprimerlo) per vedere come faccio io il modo HTML5. È molto semplice. Tuttavia, non contiene però la soluzione da + a% 2B.
Tuttavia, è possibile vedere the newer version of the extension che sto testando (solo bisogno di qualcuno per testare l'opzione specifica del dominio nelle preferenze) per una gestione più avanzata. Questo utilizza my custom, generic mailto URI parser per normalizzare l'URI mailto e i suoi valori hf per gestire il caso '+', caratteri non sicuri e duplicati valori di frequenza. Offre anche un'opzione per scegliere se utilizzare o meno l'URI di composizione HTML5.
Si può anche dare un'occhiata a this User JS script for Opera per come fare le cose.
Per il problema del valore di HF precedente menzionato in precedenza e altri elementi di URI mailto, vedere my mailto URI spec, che è stato utilizzato per la ricerca e il feedback per RFC6068.
Nota. Proprio perché l'utente di Gmail ha attivato la modifica avanzata del testo, ciò non significa che Gmail accetterà il markup HTML nell'URI di composizione e lo tratterà come tale. È tutto interpretato come testo.
Che cosa stai usando per i newline quando url-encode? E perché non stai usando lo schema URI standard 'mailto:'? ('href =" mailto: who[email protected]? subject = SubjectHere "') – Anthony
Fondamentalmente questo link apre la schermata di comporre gmail - Ho provato urlencoding newline e anche html break ma non ha funzionato :(- è per google applicazioni basate progetto – Ali
correggere il link che viene fornito in questione, perché il link fornito va alla pagina di errore del server. può aiutare gli altri. https://mail.google.com/?view=cm&fs=1&tf=1&source=mailto&to= WHOEVER% 40COMPANY.COM & su = SUBJECTHERE & cc = WHOEVER% 40COMPANY.COM & bcc = WHOEVER% 40COMPANY.COM & body = PREPOPULATEDBODY –