555 Stimmen

Wie versende ich E-Mails aus meiner Android-Anwendung?

Ich entwickle eine Anwendung in Android. Ich weiß nicht, wie ich eine E-Mail aus der Anwendung heraus senden kann?

5voto

A Pars Punkte 1595

Dadurch werden nur die E-Mail-Clients angezeigt (und aus unerfindlichen Gründen auch PayPal)

 public void composeEmail() {

    Intent intent = new Intent(Intent.ACTION_SENDTO);
    intent.setData(Uri.parse("mailto:"));
    intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"hi@example.com"});
    intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
    intent.putExtra(Intent.EXTRA_TEXT, "Body");
    try {
        startActivity(Intent.createChooser(intent, "Send mail..."));
    } catch (android.content.ActivityNotFoundException ex) {
        Toast.makeText(MainActivity.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
    }
}

4voto

Faris Muhammed Punkte 762

Ich habe diesen Code verwendet, um eine E-Mail zu senden, indem ich den Abschnitt "Standard Mail App Compose" direkt aufgerufen habe.

    Intent i = new Intent(Intent.ACTION_SENDTO);
    i.setType("message/rfc822"); 
    i.setData(Uri.parse("mailto:"));
    i.putExtra(Intent.EXTRA_EMAIL  , new String[]{"test@gmail.com"});
    i.putExtra(Intent.EXTRA_SUBJECT, "Subject");
    i.putExtra(Intent.EXTRA_TEXT   , "body of email");
    try {
        startActivity(Intent.createChooser(i, "Send mail..."));
    } catch (android.content.ActivityNotFoundException ex) {
        Toast.makeText(this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
    }

4voto

Dog Lover Punkte 558

So habe ich es gemacht. Schön und einfach.

String emailUrl = "mailto:email@example.com?subject=Subject Text&body=Body Text";
        Intent request = new Intent(Intent.ACTION_VIEW);
        request.setData(Uri.parse(emailUrl));
        startActivity(request);

3voto

Adelino Punkte 1280

Dies ist die sauberste Art, E-Mails unter Android zu versenden.

 val intent = Intent(Intent.ACTION_SENDTO).apply {
    data = Uri.parse("mailto:")
    putExtra(Intent.EXTRA_EMAIL, arrayOf("email@gmail.com"))
    putExtra(Intent.EXTRA_SUBJECT, "Subject")
    putExtra(Intent.EXTRA_TEXT, "Email body")
}
if (intent.resolveActivity(packageManager) != null) {
    startActivity(intent)
}

Sie müssen auch in Ihrem Manifest (außerhalb Ihres Anwendungs-Tags) die Abfrage für Anwendungen, die E-Mails verarbeiten (mailto)

<queries>
    <intent>
        <action android:name="android.intent.action.SENDTO" />
        <data android:scheme="mailto" />
    </intent>
</queries>

Wenn Sie HTML-Text im E-Mail-Textkörper senden möchten, ersetzen Sie bitte den "E-Mail-Textkörper" durch Ihre E-Mail-Zeichenfolge, etwa so (bitte beachten Sie, dass Html.fromHtml möglicherweise veraltet ist, dies sollte Ihnen nur zeigen, wie man es macht)

Html.fromHtml(
    StringBuilder().append("<b>Hello world</b>").toString()
)

3voto

Shohan Ahmed Sijan Punkte 4171

Diese Funktion erste direkte Absicht gmail für das Senden von E-Mail, wenn gmail nicht gefunden wird dann fördern Absicht chooser. Ich benutzte diese Funktion in vielen kommerziellen app und es funktioniert gut. Hoffe, es wird Ihnen helfen:

public static void sentEmail(Context mContext, String[] addresses, String subject, String body) {

    try {
        Intent sendIntentGmail = new Intent(Intent.ACTION_VIEW);
        sendIntentGmail.setType("plain/text");
        sendIntentGmail.setData(Uri.parse(TextUtils.join(",", addresses)));
        sendIntentGmail.setClassName("com.google.android.gm", "com.google.android.gm.ComposeActivityGmail");
        sendIntentGmail.putExtra(Intent.EXTRA_EMAIL, addresses);
        if (subject != null) sendIntentGmail.putExtra(Intent.EXTRA_SUBJECT, subject);
        if (body != null) sendIntentGmail.putExtra(Intent.EXTRA_TEXT, body);
        mContext.startActivity(sendIntentGmail);
    } catch (Exception e) {
        //When Gmail App is not installed or disable
        Intent sendIntentIfGmailFail = new Intent(Intent.ACTION_SEND);
        sendIntentIfGmailFail.setType("*/*");
        sendIntentIfGmailFail.putExtra(Intent.EXTRA_EMAIL, addresses);
        if (subject != null) sendIntentIfGmailFail.putExtra(Intent.EXTRA_SUBJECT, subject);
        if (body != null) sendIntentIfGmailFail.putExtra(Intent.EXTRA_TEXT, body);
        if (sendIntentIfGmailFail.resolveActivity(mContext.getPackageManager()) != null) {
            mContext.startActivity(sendIntentIfGmailFail);
        }
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X