web-dev-qa-db-fra.com

Comment envoyer un email HTML

j'ai trouvé un moyen d'envoyer un email en texte brut en utilisant l'intention:

final Intent emailIntent = new Intent(Android.content.Intent.ACTION_SEND);
emailIntent.setType("text/plain"); 
emailIntent.putExtra(Android.content.Intent.EXTRA_EMAIL, new     
String[]{"[email protected]"}); 
emailIntent.putExtra(Android.content.Intent.EXTRA_SUBJECT, "Subject"); 
emailIntent.putExtra(Android.content.Intent.EXTRA_TEXT, "Test");

Mais je dois envoyer du texte au format HTML.
Essayer de setType ("text/html") ne fonctionne pas.

35
Denis Palnitsky

Vous pouvez passer du texte Spanned dans votre extra. Pour vous assurer que l'intention ne résout que les activités qui traitent le courrier électronique (par exemple, les applications Gmail et Email), vous pouvez utiliser ACTION_SENDTO avec un Uri commençant par le système mailto. Cela fonctionnera également si vous ne connaissez pas le destinataire au préalable:

final Intent shareIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:"));
shareIntent.putExtra(Intent.EXTRA_SUBJECT, "The Subject");
shareIntent.putExtra(
Intent.EXTRA_TEXT,
Html.fromHtml(new StringBuilder()
    .append("<p><b>Some Content</b></p>")
    .append("<small><p>More content</p></small>")
    .toString())
);
47
antnerves

Cela m'a été très utile pour le code HTML, mais ACTION_SENDTO ne fonctionnait pas vraiment pour moi tel quel. J'ai reçu un message "action non prise en charge". J'ai trouvé une variante ici qui fait:

http://www.coderanch.com/t/520651/Android/Mobile/no-application-perform-action-when

Et voici mon code qui combine les deux ensemble:

String mailId="[email protected]";
Intent emailIntent = new Intent(Intent.ACTION_SENDTO, 
                                Uri.fromParts("mailto",mailId, null)); 
emailIntent.putExtra(Android.content.Intent.EXTRA_SUBJECT, "Subject text here"); 
// you can use simple text like this
// emailIntent.putExtra(Android.content.Intent.EXTRA_TEXT,"Body text here"); 
// or get fancy with HTML like this
emailIntent.putExtra(
         Intent.EXTRA_TEXT,
         Html.fromHtml(new StringBuilder()
             .append("<p><b>Some Content</b></p>")
             .append("<a>http://www.google.com</a>")
             .append("<small><p>More content</p></small>")
             .toString())
         );
startActivity(Intent.createChooser(emailIntent, "Send email..."));
3
Andy Weinstein

Je n'ai pas (encore) commencé le développement d'Android, mais la documentation de l'intention indique que si vous utilisez EXTRA_TEXT, le type MIME doit être text/plain. On dirait que si vous voulez voir du HTML, vous devriez utiliser EXTRA_STREAM à la place ...

2
Chris Shaffer

Cela faisait un moment que j'essayais d'envoyer du html via l'application gmail, alors j'ai décidé de laisser un aperçu de ce que j'ai trouvé, juste au cas où quelqu'un d'autre aurait des problèmes similaires.

Il semble que peu importe ce que j'ai fait, je ne pouvais pas obtenir le code HTML en caractères gras dedans . Ensuite, j'ai essayé de passer à un client Outlook et à ma grande surprise, il fonctionnait très bien . Le balisage HTML était travaille également sur d’autres appareils plus anciens, mais pas sur le mien (galaxy s7 API 26), j’ai donc pensé que cette application gmail semble avoir abandonné le support de la syntaxe html qui provient de l’intention ou que vous devez peut-être la fournir dans certains cas. manière spécifique qui n’est pas clairement documentée.

La dernière version de Gmail qui a fonctionné pour moi était la version 6.9.25 ... sur l'émulateur Nexus 5X API 25 (Nougat) Et elle a cessé de fonctionner à partir de la version 7.5.21 ... sur l'émulateur Nexus 5x API 26 (Oreo)

1
SMGhost

Vous devez remplacer "EXTRA_TEXT" par "EXTRA_HTML_TEXT".

https://developer.Android.com/reference/Android/content/Intent.html#EXTRA_HTML_TEXT

0
Rodrigo Bermejo