Opening an email client on clicking a button

前端 未结 6 1865
佛祖请我去吃肉
佛祖请我去吃肉 2020-12-13 06:01

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

相关标签:
6条回答
  • 2020-12-13 06:34

    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.

    0 讨论(0)
  • 2020-12-13 06:37

    To show only email clients use this code:

    Intent intent = new Intent(Intent.ACTION_VIEW);
    Uri data = Uri.parse("mailto:recipient@example.com?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.

    0 讨论(0)
  • 2020-12-13 06:39

    Goes like this:

    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType("plain/text");
    intent.putExtra(Intent.EXTRA_EMAIL, new String[] { "some@email.address" });
    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).

    0 讨论(0)
  • 2020-12-13 06:42

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

    android:autoLink="email"
    
    0 讨论(0)
  • 2020-12-13 06:42

    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);
        }
    
    0 讨论(0)
  • 2020-12-13 06:46

    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"))
    
    0 讨论(0)
提交回复
热议问题