Intent.EXTRA_EMAIL not populating the To field

前端 未结 6 1648
有刺的猬
有刺的猬 2021-02-03 16:35

I am trying to use an intent to send an email from my application but the To field of the email will not populate. If I add code to fill in the subject or text, they work fine.

相关标签:
6条回答
  • 2021-02-03 16:56

    I think you are not passing recipient as array of string

    it should be like

    emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,new String[] { "someone@gmail.com" });
    
    0 讨论(0)
  • 2021-02-03 17:07

    In Kotlin - Android

    fun sendMail(
            activity: Activity,
            emailIds: Array<String>,
            subject: String,
            textMessage: String
        ) {
    
    
            val emailIntent = Intent(Intent.ACTION_SEND)
            emailIntent.type = "text/plain"
            emailIntent.putExtra(Intent.EXTRA_EMAIL, emailIds)
            emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject)
            emailIntent.putExtra(Intent.EXTRA_TEXT, textMessage)
            emailIntent.setType("message/rfc822")
            try {
                activity.startActivity(
                    Intent.createChooser(
                        emailIntent,
                        "Send email using..."
                    )
                )
            } catch (ex: ActivityNotFoundException) {
                Toast.makeText(
                    activity,
                    "No email clients installed.",
                    Toast.LENGTH_SHORT
                ).show()
            }
        }
    

    Also you can use [ val emailIntent = Intent(Intent.ACTION_SENDTO) ] to invoke direct email client

    //argument of function
    val subject = "subject of you email"
    val eMailMessageTxt = "Add Message here"
    
    val eMailId1 = "emailId1@gmail.com"
    val eMailId2 = "emailId2@gmail.com"
    val eMailIds: Array<String> = arrayOf(eMailId1,eMailId2)
    
    //Calling function
    sendMail(this, eMailIds, subject, eMailMessageTxt)
    

    I hope this code snippet will help to kotlin developers.

    0 讨论(0)
  • 2021-02-03 17:07

    Couple of things:

    1 - You need to set the action constant variable as ACTION_SENDTO.
    Intent intentEmail = new Intent(Intent.ACTION_SENDTO);

    2 - If you want it to be opened by only the mail then use the setData() method: intentEmail.setData(Uri.parse("mailto:")); Otherwise it will ask you to open it as text, image, audio file by other apps present on your device.

    3 - You need to pass the email ID string as an array object and not just as a string. String is: "name@email.com". Array Object of the string is: new String[] {"email1", "email2", "more_email"}.

    intentEmail.putExtra(Intent.EXTRA_EMAIL, new String[] {"email@overflow.com", "abcd@stack.com"});
    
    0 讨论(0)
  • 2021-02-03 17:10

    Use this

    public void Email(){
        // use this to declare your 'recipient' string and get your email recipient from your string xml file
        Resources res = getResources();
        String recipient = getString(R.string.IntegralEmailAddress);
        Intent emailIntent = new Intent(Intent.ACTION_SEND); 
        emailIntent.setType("message/rfc822");  //set the email recipient
        emailIntent.putExtra(Intent.EXTRA_EMAIL, recipient);
        //let the user choose what email client to use
        startActivity(Intent.createChooser(emailIntent, "Send mail using...")); 
    
    ``}
    

    This will work :)
    This is what android documentation says about Intent.Extra_Email
    -A string array of all "To" recipient email addresses.
    So you should feed string properly You can read more over here
    http://developer.android.com/guide/components/intents-common.html#Email and here http://developer.android.com/guide/topics/resources/string-resource.html Or use the ACTION_SENDTO action and include the "mailto:" data scheme. For example:

    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)
  • 2021-02-03 17:13

    This is what works for me:

    val email = "recipient@email.com"
    val intent = Intent(Intent.ACTION_SENDTO)
    intent.data = Uri.parse("mailto:$email")
    intent.putExtra(Intent.EXTRA_SUBJECT,"My Subject")
    startActivity(intent)
    
    0 讨论(0)
  • 2021-02-03 17:17
    private void callSendMeMail() {
        Intent Email = new Intent(Intent.ACTION_SEND);
        Email.setType("text/email");
        Email.putExtra(Intent.EXTRA_EMAIL, new String[] { "me@gmail.com" });
        Email.putExtra(Intent.EXTRA_SUBJECT, "Feedback");
        startActivity(Intent.createChooser(Email, "Send mail to Developer:"));
    }
    
    0 讨论(0)
提交回复
热议问题