E-Mail mit HTML-Content versenden

  • Hallo,


    ich versuche gerade von meiner App aus eine E-Mail, die HTML enthält, zu versenden. Leider wird mir der HTML-Code als Klartext ausgegeben.


    Mein Code sieht bisher folgendermaßen aus:


    Bei meiner Recherche habe ich diverse Code-Snippets gefunden bei denen behauptet wurde das würde so funktionieren, bei mir nicht.


    Dann bin ich noch auf folgende Codezeile gestoßen, die Abhilfe schaffen sollte:

    Java
    intent.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml(table.toString()));


    Funktioniert leider auch nicht, da das Ding dazu dient HTML-Text so umzuformatieren dass es als reine Textform passt. Der wirft einfach alle HTML-Tags raus und gibt mir einen einzigen String ohne Leerzeichen und alles, bei dem einfach der gesamte Content zusammenklebt.


    Bin ich komplett auf dem Holzweg oder fehlt da nur eine Kleinigkeit?
    Am HTML-Code itself kanns eigentlich auch nicht liegen, is ja nur ne simple Tabelle und in eine WebView geworfen krieg ich auch das was ich will.


    Hat jemand eine Idee?


    Gruß,
    matze

  • Die Idee ist eigentlich ganz einfach, aber ich weiß die Lösung in Android nicht.


    E-Mail mit HTML brauchen den Hinweis, dass der Inhalt HTML ist - im Mail-Quelltext sieht das so aus:

    Code
    Content-Type: text/html; charset="utf-8"
    Content-Transfer-Encoding: quoted-printable
    
    
    <html>...</html>


    Diese Angaben müssen entweder im Mail-Header oder im Abschnitts-Header (Multipart-Mail für text, html, Anhänge) vor der ersten Leerzeile stehen, es hilft also wahrscheinlich nicht, wenn du es einfach am Anfang dazu schreibst, weil die Mail-App selber bereits den Header mit einer Leerzeile beendet hat...


    Das quoted-printable ist nötig, weil E-Mail nur 7-bit-Zeichen erlaubt (ja, daran sollte man sich auch im Jahr 2012 noch halten). Das sollte allerdings das Mail-Programm selber schaffen.


    Entweder kannst du beim Mail-Intent den Content-Type angeben (wenn der Intent-Empfänger das versteht), oder irgendjemand hier im Forum hat noch eine bessere Idee.

  • Hallo Matthias


    dein Weg per


    Java
    final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
    emailIntent.setType("text/html");
    emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
    emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml(body));
    startActivity(Intent.createChooser(emailIntent, "Email:"));


    ist vollkommen richtig, das Problem liegt eher beim Email-Clienten, der versteht zwar ein paar HTML Kommandos, aber eben nicht alle
    und <table> zählt leider dazu.


    Versuch mal einen Link per <a href=""> oder Bold,Italic oder so, das sollte funktionieren.
    Hier noch mal ein Lesetipp


    http://stackoverflow.com/quest…there-really-no-relativel

  • Hi leute,


    hab mich jetzt dazu entschlossen das ganze einfach in eine .html Datei zu werfen und als Anhang zu verschicken.


    Hier mein Code:


    Ganz wichtig, sonst funktioniert es nicht, ist natürlich auch die Permission

    Java
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


    die man ins AndroidManifest.xml eintragen muss. Tut man das nicht liefert die Methode getExternalCacheDir() als Rückgabewert null weil die App keine Zugriffsrechte gekriegt hat.



    Gruß,
    matze

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!