swirl logo

About     Archive     Feed     Impressum

Android: Mails aus App versenden

Hintergrund

Eine einfache Möglichkeit um dem Benutzer eine Kontaktmöglichkeit anzubieten ist der bewährte Weg über die eMail. In diesem Beitrag wird folgend eine denkbar simple Möglichkeit vorgestellt, wie der Versand über einen Mail-Clienten am Smartphone des Benutzers erfolgt.

Implementierung

Der einfachste Weg eine Mail zu versenden führt uns letztlich zur Nutzung eines am Smartphone des Benutzers vorinstallierten Mail-Clients. Um mittels dem installierten Client eine Mail zu versenden, genügt es bereits, das Intent ACTION_SEND zu verwenden sowie als Intent-Type message/rfc822 anzugeben.

Weiterhin wird mit

Nach Angabe der erforderlichen Parameter kann bereits der Versand erfolgen:

Intent i = new Intent(Intent.ACTION_SEND);
i.setType("message/rfc822");
i.putExtra(Intent.EXTRA_EMAIL  , new String[]{"empfaenger@example.de"});
i.putExtra(Intent.EXTRA_SUBJECT, "Betreff der Mail");
i.putExtra(Intent.EXTRA_TEXT   , "Eigentliche Nachricht");
try {
    startActivity(Intent.createChooser(i, "Sende Mail..."));
} catch (android.content.ActivityNotFoundException ex) {
    Toast.makeText(ExampleActivity.this, "Es sind keine Mail-Clients installiert, weshalb die Mail nicht versendet werden kann.", Toast.LENGTH_LONG).show();
}

Der Benutzer wird nun aufgefordert einen entsprechenden Mail-Clienten zu wählen. Im Falle, dass kein Client installiert ist, wird die ActivityNotFoundException gefangen und dem Benutzer via Toast ein Hinweis diesbezüglich angezeigt.

Anhang beifügen

Falls ein Attachement beigefügt werden soll, muss das bereits angesprochene Intent-Extra EXTRA_STREAM angegeben werden:

i.putExtra(Intent.EXTRA_STREAM   , Uri.parse("file://Pfad-zur-Datei"));

HTML-Mail versenden

Prinzipiell verhält es sich mit Versand einer HTML-Mail ähnlich wie mit dem Versand einer einfachen Text-Mail. Allerdings wird als Intent-Type anstelle von message/rfc822 der Typ text/html angegeben. Mittels Html.fromHtml(body) wird schließlich der HTML-Content in den Mail-Body eingefügt:

Intent i = new Intent(Intent.ACTION_SEND);
i.setType("text/html");
i.putExtra(Intent.EXTRA_EMAIL  , new String[]{"empfaenger@example.de"});
i.putExtra(Intent.EXTRA_SUBJECT, "Betreff der Mail");
i.putExtra(Intent.EXTRA_TEXT   ,  Html.fromHtml(body));
try {
    startActivity(Intent.createChooser(i, "Sende Mail..."));
} catch (android.content.ActivityNotFoundException ex) {
    Toast.makeText(ExampleActivity.this, "Es sind keine Mail-Clients installiert, weshalb die Mail nicht versendet werden kann.", Toast.LENGTH_LONG).show();
}
Hire me!