Envoi de courrier électronique html à l'aide de <table>, etc. – est-ce qu'il n'y a vraiment pas de manière intégrée d'Intégration intégrée?

J'ai lu un peu les limites de l'envoi d'un courrier électronique html à partir d'Android. Toutes les suggestions pour envoyer un courrier électronique html semblent simplement passer Html.fromHtml (yourHtmlString) à l'intention comme Intent.EXTRA_TEXT. Cela fonctionne pour quelques balises de base – gras, italique – mais ne sera pas comme une table html.

Il semble que vous pourriez essayer d'étendre une partie de la fonctionnalité de Html ou d'implémenter votre propre gestionnaire de tags, mais je me demande s'il n'y a pas de limitation plus fondamentale qui vous obligera à faire quelque chose de complètement différent (comme avec le mail api ou quelque chose comme ça ).

  • Obtenez SSID du réseau WiFi déconnecté dans Android en utilisant BroadcastReceiver?
  • Comment positionner StaticLayout dans Android?
  • Devrais-je restaurer sauvegardé dans l'état surCréer ou sur onRestoreInstanceState?
  • Android modifiant la couleur d'arrière-plan pour le fragment de préférence
  • Les vecteurs de support AppCompat 23.3 ne fonctionnent plus?
  • La diffusion reçue deux fois
  • La raison pour laquelle je suggère ceci est parce que, dans la mesure où l'intention elle-même le sait, Html.fromHtml (blah) est simplement une charsequence, et si vous appelez les méthodes sur l'interface charsequence sur cet objet, vous ne voyez aucun élément html (à Au moins, je n'ai pas). Toutes les choses html / tag semblent être enveloppées dans SpannableStringBuilder que Html.fromHtml revient réellement … et je me demande si l'application Gmail regarde sous les couvertures pour voir quelle est la charsequence et puis peut gérer quelques balises , Ce qui signifie qu'il n'y a aucun espoir de faire quelque chose sur le côté de votre application de choses pour obtenir / tromper l'application Gmail pour gérer quelque chose de plus compliqué que gras, italique, etc.

    J'ai examiné le courrier électronique brisé que l'application Gmail envoie effectivement, et elle envoie automatiquement un texte / simple sans balises, et la version texte / html avec le nombre limité de balises. J'ai même essayé de coller dans certaines balises html échappées qui pourraient finalement être converties en balises réelles dans la partie texte / html du courrier électronique, mais hélas, elles sont restées échappées … et cela serait bien sûr un peu méfiant.

    Quoi qu'il en soit, pour tous ceux qui ont peut-être regardé cela plus, je voulais faire une confirmation supplémentaire que la fonctionnalité par défaut "envoyer un email html" Android vous rapprochera de ce dont vous pourriez avoir besoin, mais à la fin, vous devez mordre La balle et mettez en œuvre beaucoup de choses de niveau inférieur vous-même (par exemple, en envoyant un courrier électronique à l'aide d'une API JavaMail sans utiliser l'application par défaut / intégrée , ce qui signifie que vous devez traiter les problèmes de pw, etc.).

    Remarque (plus tard): J'ai enveloppé le SpannableStringBuilder renvoyé de Html.fromHtml avec une classe personnalisée qui a étendu SpannableStringBuilder et l'a transmis à l'intention d'écouter les appels dans l'interface Spanned. Il s'avère que lorsque les choses sont écrites dans le colis qui est envoyé à l'intention du courrier électronique, TextUtils.writeToParcel effectue une vérification spéciale pour supprimer les éléments en caractères gras et italiques en vérifiant d'abord si CharSequence est une instance de Spanned et ensuite demander Les extensions (via spanned.getSpans). Néanmoins, je ne vois aucun espoir évident de faire les modifications pour obtenir quelque chose d'aussi simple que les étiquettes table / td traitées ici. Et j'ai même essayé de modifier le toString () de ma sous-classe SpannableStringBuilder pour renvoyer une table brute html pour voir ce qui se passerait, mais il s'est échappé ailleurs dans le processus d'écriture de paquets.

    Et plus (plus tard): TextUtils.writeToParcel (CharSequence cs, Parcel p, …) sera, si cs est une instance de "Spanned", écrivez ces extensions uniquement si elles implémentent l'interface "ParcelableSpan" … qui est " Un type spécial de Parcelable pour les objets qui serviront de texte "et" ne peut être utilisé que par le code dans le cadre, il n'est pas destiné aux applications pour implémenter leurs propres plages partagées ". Donc, même si vous vouliez vous accrocher à cela et en écrire le vôtre pour gérer les étiquettes de table ou quoi que ce soit, cela semble être découragé. Homme, je souhaite que hackbod pese ici avec quelque chose d'évident que j'ai manqué.

  • L'autorisation d'un téléphone Android - call_phone est-elle nécessaire?
  • Écrit le fichier .json et lisez ce fichier dans Android
  • Réglage de la vue vers l'échelle pour correspondre à la largeur et à la hauteur
  • Images pour les boutons AlertDialog
  • Android - Enregistrez l'image de l'URL sur la carte SD
  • Android WebView addJavascriptInterface ne fonctionne pas si la vision du Web est créée dans le rappel de WebChromeClient # onCreateWindow
  • One Solution collect form web for “Envoi de courrier électronique html à l'aide de <table>, etc. – est-ce qu'il n'y a vraiment pas de manière intégrée d'Intégration intégrée?”

    Cela fonctionne pour quelques balises de base – gras, italique – mais ne sera pas comme une table html.

    C'est une fonction du client de messagerie, très probablement. Tous les clients de messagerie ne peuvent pas autoriser un HTML arbitraire sur n'importe quelle plate-forme. Ainsi, alors que Mozilla Thunderbird semble vous permettre de créer un courrier HTML avec une table, Gmail n'a pas (au moins, je ne vois pas une option dans la fenêtre de composition du message).

    Je me demande s'il n'y a pas de limitation plus fondamentale qui vous obligera à faire quelque chose de complètement différent

    À moins d'écrire votre propre client de messagerie, étendre les différentes classes nécessaires pour permettre à TextView et EditText de gérer les tables HTML (c'est bien plus que la classe Html ) ne vous fera aucun bien.

    Et je me demande si l'application Gmail regarde sous les couvertures pour voir quelle est la charsequence et puis peut gérer quelques balises

    TextView et EditText peuvent "gérer quelques balises", en alignant à peu près ce que Html peut analyser / générer et SpannedString peut représenter.

    Rien de tout cela ne peut gérer une table HTML. Ni JavaScript. Ni CSS. Ni l' iframe ni aucun autre tag.

    Mais à la fin, vous devez mordre la balle et mettre en œuvre beaucoup de choses de niveau inférieur vous-même

    Je commencerais par me demander si l'envoi de courrier HTML avec des tables du téléphone directement en vaut la peine. Vous pouvez envoyer un courrier HTML avec des tables de votre serveur à l'aide d'une interface de service Web, ou vous pouvez envoyer du courrier HTML sans table du téléphone. Aucune de ces personnes ne vous obligerait à collecter "le matériel".

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.