Rahul Kalidindi
Rahul Kalidindi

Reputation: 4736

Opening an email client on clicking a button

I am designing an app in which i need to open an email client on clicking a button. The email client should be opened with a pre-defined subject and 'to' address. Is there a way to attain this? Please provide me the solution and a code example if possible...

Upvotes: 67

Views: 54649

Answers (6)

Rajeev Jayaswal
Rajeev Jayaswal

Reputation: 1501

Ok - now the above answer no longer works for me in year 2020. I found something mentioned on google official developer sites which worked for me.

 Intent intent = new Intent(Intent.ACTION_SENDTO);
    intent.setData(Uri.parse("mailto:")); // only email apps should handle this
    intent.putExtra(Intent.EXTRA_EMAIL, addresses);
    intent.putExtra(Intent.EXTRA_SUBJECT, subject);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }

Upvotes: 7

Sumit Jain
Sumit Jain

Reputation: 1150

Prefer to use constants if available like for intent.type ClipDescription.MIMETYPE_TEXT_PLAIN

Kotlin:

val intent = Intent(Intent.ACTION_SEND)
intent.type = ClipDescription.MIMETYPE_TEXT_PLAIN
intent.putExtra(Intent.EXTRA_EMAIL, arrayOf("emailId 1", "emailId 2"))
intent.putExtra(android.content.Intent.EXTRA_SUBJECT,"Subject for email")
intent.putExtra(android.content.Intent.EXTRA_TEXT, "Description for email")
startActivity(Intent.createChooser(intent,"Send Email"))

Upvotes: 1

mixel
mixel

Reputation: 25836

To show only email clients use this code:

Intent intent = new Intent(Intent.ACTION_VIEW);
Uri data = Uri.parse("mailto:[email protected]?subject=" + Uri.encode(subject) + "&body=" + Uri.encode(body));
intent.setData(data);
startActivity(intent);

If you already chose default email client then it will launch it. Otherwise it will show a list of available email clients.

Upvotes: 50

Daniel Beltrami
Daniel Beltrami

Reputation: 776

If you have a e-mail address on screen, you can just use in your xml, like this:

android:autoLink="email"

Upvotes: 7

yanchenko
yanchenko

Reputation: 57156

Goes like this:

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("plain/text");
intent.putExtra(Intent.EXTRA_EMAIL, new String[] { "[email protected]" });
intent.putExtra(Intent.EXTRA_SUBJECT, "subject");
intent.putExtra(Intent.EXTRA_TEXT, "mail body");
startActivity(Intent.createChooser(intent, ""));

Alternatively, you could use IntentFactory.getSendEmailIntent(String mailTo, String mailCC, String subject, CharSequence body, File attachment).

Upvotes: 94

shailesh
shailesh

Reputation: 31

You can open email client on emulator by configuring your email address with email inbuild with email. Then when call the intent will open and send mail.

Upvotes: 0

Related Questions