Pré-remplir gmail compose l'écran avec le texte HTML

Salut Les gars, j'ai découvert que pour ouvrir un écran GMAIL composer vous devez être connecté et ouvrir le lien suivant:

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

remplace les variables remplit les endroits correspondants sur la forme de composition. Cependant, si je veux entrer dans le corps texte multiligne ou la ligne casse son tout simplement ne fonctionne pas, même si je urlencode. Toutes les idées ici?

9
demandé sur Ali 2010-04-06 13:56:34

6 réponses

vérifiez que votre méthode UrlEncode traduit vraiment newlines en"%0a". Voici un exemple d'organisme de messagerie à deux lignes:

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

12
répondu Anthony Faull 2010-04-06 14:34:34

Gmail a le soutien pour ce que HTML5 registerProtocolHandler () emits.

exemple:

var compose = "https://mail.google.com/mail/?extsrc=mailto&url=" + encodeURIComponent("mailto:?subject=test");

C'est ce que Gmail attend de vous. Modifier le début pour l'URI de composition propre au domaine bien sûr.

cependant, qui charge la forme de la composition par elle-même (non intégré à la page inbox). Donc, si vous voulez que le formulaire de composition soit intégré dans la page de la boîte de réception, vous devez charger:

"https://mail.google.com/mail/?compose=1&view=cm&fs=1&to=1&su=2&body=3&cc=4&bcc=5"

à la place. Mais pour cela, vous devez d'abord analyser L'URI de mailto pour obtenir les valeurs HF et fixer leur pourcentage d'encodage afin de vous assurer qu'ils sont aptes à envoyer une URI HTTP. Voir ci-dessous pour plus d'infos à ce sujet.

maintenant, ce que Gmail fait avec le HTML5 compose URI est pourcentage-décoder l'url param pour obtenir L'URI mailto. Ensuite, il analyse L'URI mail pour obtenir les valeurs HF. Ensuite, il utilise ces valeurs HF pour construire une URI comme la boîte de réception intégrée et vous redirige .

le problème avec la méthode HTML5 de Gmail est qu'elle n'encode pas les caractères '+' dans les valeurs HF à"%2B". Le résultat final est que les caractères '+' dans L'URI de mailto (ce ne sont pas des espaces dans un URI de mailto) sortent comme des espaces dans la forme de composition Gmail.

pour contourner le bogue Gmail, vous n'avez qu'à faire:

var compose = "https://mail.google.com/mail/?extsrc=mailto&url=" + encodeURIComponent("mailto:?subject=test".replace(/\+/g, "%2B"));

à la place.

le bug a été signalé il y a des années, mais Gmail refuse de corriger il.

comme vous devriez également voir, pour la boîte de réception intégrée à la composition URI, si vous avez eu L'URI mailto " mailto:?subject=1+2", vous devez vous assurer que vous émettez su=1% 2B2 dans L'URI de composition et non su=1+2. Ce dernier fera qu'un espace sera dans le champ Sujet au lieu de '+'. Cette partie n'est pas un bug avec Gmail. C'est comme ça que fonctionne HTTP.

Vous pouvez voir la source de mon Gmail Composer Extension pour Opera (décompressez-le) pour voir comment je faites le HTML5. C'est très simple. Mais, il ne contient pas le + à % 2B solution.

cependant, vous pouvez voir la nouvelle version de l'extension que je teste (juste besoin de quelqu'un pour tester l'option spécifique au domaine dans les préférences) pour une manipulation plus avancée. Celui-ci utilise pour normaliser L'URI du mailto et ses valeurs HF pour gérer le cas"+", les caractères dangereux et les doublons hfvalues. Il offre également une option pour choisir si vous voulez utiliser le HTML5 composez URI ou non.

vous pouvez également jeter un oeil à ce script utilisateur JS pour L'Opéra pour savoir comment faire les choses.

Pour le doublon hfvalue problème mentionné plus tôt, et d'autres mailto URI trucs, voir mon mailto URI spec , qui a été utilisé pour la recherche et la rétroaction pour RFC6068 .

Note: Ce N'est pas parce que L'utilisateur Gmail dispose d'une riche édition de texte activée que Gmail acceptera le markup HTML dans l'URI de composition et le traitera comme tel. Tout est interprété comme du texte.

8
répondu Shadow2531 2011-03-30 04:38:37

j'ai utilisé le standard javascript encodeURIComponent() pour encoder le corps multiligne. Il a travaillé.

aussi ceux qui veulent pré-peupluler gmail générique et non compte spécifique de domaine app, utilisez cette URL à la place:

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

2
répondu Jayesh 2010-08-15 12:51:44

actuellement (février 2014), pour pré-remplir l'écran de composition avec les champs " à " et "sujet", utilisez:

https://mail.google.com/mail/?&v=b&cs=wh&to=alias@domain.com&subject=subject%20goes%20here

Note: cs=wh est significatif, car la composition hyperlink utilise cs=b , qui ne s'autopopule pas.

1
répondu Matthew Millar 2014-02-16 23:57:50

une autre limitation est que les requêtes GET sont limitées à un certain nombre de caractères, donc essayer D'utiliser la méthode MAILTO + GET params ne fonctionnera pas pour de plus gros morceaux de contenu. Quelqu'un a-t-il trouvé un autre moyen de pousser un contenu plus grand vers une nouvelle fenêtre de composition via une sorte de requête web?

D'après ce que je peux dire, ce sera difficile puisque la mailto est en fait une action de navigateur correcte?

0
répondu Mrmartin 2014-09-17 14:28:55

Merci pour ce tuyau. Une chose qui n'a pas été spécifiée dans les autres réponses est que si vous êtes connecté à Gmail avec plusieurs comptes, comme un compte personnel et un compte professionnel avec Googleapps, utiliser https://mail.google.com/a/domain.com/ au lieu de https://mail.google.com/mail/ vous permet de spécifier quelle boîte aux lettres utiliser pour envoyer le message. Sinon, Gmail ne fait que charger le compte que vous avez ouvert en premier.

0
répondu Julien 2015-06-30 08:33:20