send email in android

How to send Email in Android

In Android, you can use Intent.ACTION_SEND to call an existing email client to send an Email.

See following code snippets :


	Intent email = new Intent(Intent.ACTION_SEND);
	email.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"});		  
	email.putExtra(Intent.EXTRA_SUBJECT, "subject");
	email.putExtra(Intent.EXTRA_TEXT, "message");
	email.setType("message/rfc822");
	startActivity(Intent.createChooser(email, "Choose an Email client :"));

P.S This project is developed in Eclipse 3.7, and tested with Samsung Galaxy S2 (Android 2.3.3).

Run & test on real device only.
If you run this on emulator, you will hit error message : “No application can perform this action“. This code only work on real device.

1. Android Layout

File : res/layout/main.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textViewPhoneNo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="To : "
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
        android:id="@+id/editTextTo"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="textEmailAddress" >

        <requestFocus />

    </EditText>

    <TextView
        android:id="@+id/textViewSubject"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Subject : "
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
        android:id="@+id/editTextSubject"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
         >
    </EditText>

    <TextView
        android:id="@+id/textViewMessage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Message : "
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
        android:id="@+id/editTextMessage"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="top"
        android:inputType="textMultiLine"
        android:lines="5" />

    <Button
        android:id="@+id/buttonSend"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Send" />

</LinearLayout>

2. Activity

Full activity class to send an Email. Read the onClick() method, it should be self-explanatory.


package com.mkyong.android;
 
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
 
public class SendEmailActivity extends Activity {
 
	Button buttonSend;
	EditText textTo;
	EditText textSubject;
	EditText textMessage;
 
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
 
		buttonSend = (Button) findViewById(R.id.buttonSend);
		textTo = (EditText) findViewById(R.id.editTextTo);
		textSubject = (EditText) findViewById(R.id.editTextSubject);
		textMessage = (EditText) findViewById(R.id.editTextMessage);
 
		buttonSend.setOnClickListener(new OnClickListener() {
 
			@Override
			public void onClick(View v) {
 
			  String to = textTo.getText().toString();
			  String subject = textSubject.getText().toString();
			  String message = textMessage.getText().toString();
 
			  Intent email = new Intent(Intent.ACTION_SEND);
			  email.putExtra(Intent.EXTRA_EMAIL, new String[]{ to});
			  //email.putExtra(Intent.EXTRA_CC, new String[]{ to});
			  //email.putExtra(Intent.EXTRA_BCC, new String[]{to});
			  email.putExtra(Intent.EXTRA_SUBJECT, subject);
			  email.putExtra(Intent.EXTRA_TEXT, message);

			  //need this to prompts email client only
			  email.setType("message/rfc822");
			  
			  startActivity(Intent.createChooser(email, "Choose an Email client :"));
			  
			}
		});
	}
}

3. Demo

See default scree, fill in the detail, and click on the “send” button.

send email in android

It will prompts your existing Email client to select.

send email in android

In this case, i selected Gmail, and all previous filled in detail will be populated to Gmail client automatically.

send email in android
Note
Android does not provide API to send Email directly, you have to call the existing Email client to send Email.

Download Source Code

Download it – Android-Send-Email-Example.zip (16 KB)

References

  1. Android Intent ACTION_SEND Javadoc

58 comments on “How to send Email in Android

  1. Magnificent site. Plenty of useful information here. I’m sending it to some friends ans additionally sharing in delicious. And certainly, thanks in your sweat! kadfcdeddgecdbeb

  2. Can anyone tell me that how can I send the mail with out the use of Gmail or Email app.
    Means other app like Gmail but do not use Gmail or Email???

  3. I prefer to use an exist sender account to send email , I do not expect APP user know how to setup their sending account , please help me to build the source code that send mail directly , instead of Via mobile client mailbox.

  4. Thank you for this, so much. I am a beginner android developer. How would I add an option to send picture attatchments with the email?

    1. Intent intent = new Intent(Intent.ACTION_SEND);

      intent.setType(“text/plain”);

      intent.putExtra(Intent.EXTRA_EMAIL,

      [email protected]”);

      intent.putExtra(Intent.EXTRA_SUBJECT, “Subject”);

      intent.putExtra(

      Intent.EXTRA_TEXT,

      “attachment”

      startActivity(Intent.createChooser(intent, “Send Email”));

  5. I used startActivityForResult to send the mail but getting result code as 0 everytime, even when the mail is received by the recepient. How can i get the correct result code.

  6. hey its work fine but its not getting the to,subject,message field to the gmail to,subject,message field can any one just help me to sort it out

  7. Hi

    thanks very much, excellent tutorial. works really well. however is it possible to have numerous message fields in place of just the one message text area. I was hoping that the user would be able to populate numerous fields and when the email was read by the recipient the messages would be read as one full message.

    thanks in advance

    Dave

  8. Hey Mate,

    You are doing such an awesome job and I really appreciate that. I need some help from you. Can you please tell me how can I create a function that will forward my sms to an email ID?

    Thanks,

    Ali
    [email protected]

  9. This is g8 site where i have been learning so many things regarding java, android with in easy manner and example also. I think this is r8 way to teach. And you have been working hard to do so. Thanks a lot.

  10. hi,

    can you please tell me how to run android app always on background.
    i am trying to listen all incoming sms and calls..

    thank you..

  11. Hello can you tell me how can I send html through email, with some style defined into span????
    I have read a lot of forums they simply talks about tagHandler but their is very less information regarding this on internet.

  12. If I only have one email client on the device the chooser does not appear, it goes straight to the one and only email client configured. That is fine. The problem is Intent.createChooser() has an IntentReceiver that is leaking and fills logcat with error messages. This works fine on the emulator if I configure the email client. Is there a way to startActivity() without calling Intent.createChooser()?

  13. Ay chooseb an email client:
    I am getting an exception as “No apllication can perform this action”….
    Is it possible to send a mail using this app code?

    1. This code only collect your fill in form data and pass it to your existing email client in your phone. Please choose an email client which is able to send email.

  14. I tried this email.setType(“message/rfc822”), but it shows skype with other email clients.. Hoe remove skype from there ?

    1. Use to send only via Email client this code
      Intent email = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(“mailto”, “mail_to_send”, null));

Leave a Comment

Your email address will not be published. Required fields are marked *