2010-04-06 16 views
9

Ciao ragazzi ho scoperto che, al fine di aprire una schermata di Gmail che avrebbe dovuto essere registrato e aprire il seguente link:precarica Gmail comporre schermo con testo HTML

https://mail.google.com/a/domain/?view=cm&fs=1&tf=1&source=mailto&to=WHOEVER%40COMPANY.COM&su=SUBJECTHERE&cc=WHOEVER%40COMPANY.COM&bcc=WHOEVER%40COMPANY.COM&body=PREPOPULATEDBODY

Sostituzione delle variabili riempie i posti corrispondenti sul modulo di composizione. Comunque, se voglio entrare nel corpo, il testo multilinea o le interruzioni di riga non funzionano, anche se lo urlencode. Qualche idea qui?

+0

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

+0

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

+0

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 –

risposta

11

Verificare che il metodo UrlEncode traduca veramente le nuove righe in "% 0a". Ecco un esempio di un corpo e-mail 2-line:

https://mail.google.com/mail/?view=cm&ui=2&tf=0&fs=1&to=WHOEVER%40COMPANY.COM&su=SUBJECTHERE&body=LINE1%0aLINE2

+2

Grazie per averlo risolto, ma ora sto avendo un altro problema con troppo testo - http://stackoverflow.com/questions/2590467/prefilling-large-volumes-of-body-text-in-gmail-compose-getting -un -request-uri-too – Ali

+1

L'url di Compose funziona davvero alla grande :). Grazie. C'è un modo in cui possiamo aprire la finestra di posta come se la sua risposta o inoltro? In modo che gli utenti possano inoltrare direttamente o rispondere alle e-mail. –

+0

@Kartik trova qualche soluzione per questo? –

2

ho usato JavaScript standard encodeURIComponent() per la codifica del corpo multilinea. Ha funzionato.

anche coloro che vogliono precompilare gmail generico e non applicazione specifico account di dominio, utilizzare questo URL invece:

https://mail.google.com/?view=cm&fs=1&tf=1& ....

8

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.

+0

Bella spiegazione. Peccato che questo non possa essere accettato retroattivamente come risposta. – Palpatim

+0

Sai se è possibile combinare [email protected] a questi URL per selezionare anche un account GMail alternativo? – oodavid

+0

@oodavid Non lo so *, ma presumo di no e presumo che sia fatto dai cookie. – Shadow2531

1

Attualmente (febbraio 2014), per precompilare la schermata di composizione con campi A e Oggetto, uso:

https://mail.google.com/mail/?&v=b&cs=wh&[email protected]&subject=subject%20goes%20here 

Nota: cs=wh è significativo, in quanto il collegamento ipertestuale composizione utilizza cs=b, che non compilati automaticamente.

+0

Questo funziona per me. –

0

Un'altra limitazione è che le richieste GET sono limitate a un certo numero di caratteri in modo da cercare di utilizzare il metodo GET MAILTO + params non funziona per i più grandi pezzi di contenuto. Qualcuno ha trovato un altro modo per inviare contenuti più grandi a una nuova finestra di Compose tramite una sorta di richiesta web?

Da quello che posso dire questo sarà difficile in quanto il mailto è in realtà un'azione browser corretto?

0

Grazie per il suggerimento. Una cosa che non è stato specificato in altre risposte è che se si è registrato in Gmail con più account, come un conto personale e un professionista con Google Apps, utilizzando https://mail.google.com/a/domain.com/ invece di https://mail.google.com/mail/ consente di specificare quale cassetta postale da utilizzare per inviare il messaggio. Altrimenti Gmail carica solo l'account che hai effettuato l'accesso per primo.