Android Core
Send Email with Attachment in Android
This is a simple demo for send email in Android with attachment. For attachment I am using Intent.ACTION_GET_CONTENT.
Don’t forget to add permissions in your manifest.xml-
1 2 3 4 | < uses-permission android:name = "android.permission.INTERNET" /> < uses-permission android:name = "android.permission.READ_EXTERNAL_STORAGE" /> < uses-permission android:name = "android.permission.READ_INTERNAL_STORAGE" /> < uses-permission android:name = "android.permission.ACCESS_NETWORK_STATE" /> |
1)MainActivity.java
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095 096 097 098 099 100 101 102 103 104 105 106 107 108 109 110 | package com.manish.sendemaildemo; import android.app.Activity; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; /** * * @author manish * */ public class MainActivity extends Activity implements OnClickListener { EditText editTextEmail, editTextSubject, editTextMessage; Button btnSend, btnAttachment; String email, subject, message, attachmentFile; Uri URI = null ; private static final int PICK_FROM_GALLERY = 101 ; int columnIndex; @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); editTextEmail = (EditText) findViewById(R.id.editTextTo); editTextSubject = (EditText) findViewById(R.id.editTextSubject); editTextMessage = (EditText) findViewById(R.id.editTextMessage); btnAttachment = (Button) findViewById(R.id.buttonAttachment); btnSend = (Button) findViewById(R.id.buttonSend); btnSend.setOnClickListener( this ); btnAttachment.setOnClickListener( this ); } protected void onActivityResult( int requestCode, int resultCode, Intent data) { if (requestCode == PICK_FROM_GALLERY && resultCode == RESULT_OK) { /** * Get Path */ Uri selectedImage = data.getData(); String[] filePathColumn = { MediaStore.Images.Media.DATA }; Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null , null , null ); cursor.moveToFirst(); columnIndex = cursor.getColumnIndex(filePathColumn[ 0 ]); attachmentFile = cursor.getString(columnIndex); Log.e( "Attachment Path:" , attachmentFile); URI = Uri.parse( "file://" + attachmentFile); cursor.close(); } } @Override public void onClick(View v) { if (v == btnAttachment) { openGallery(); } if (v == btnSend) { try { email = editTextEmail.getText().toString(); subject = editTextSubject.getText().toString(); message = editTextMessage.getText().toString(); final Intent emailIntent = new Intent( android.content.Intent.ACTION_SEND); emailIntent.setType( "plain/text" ); emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] { email }); emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject); if (URI != null ) { emailIntent.putExtra(Intent.EXTRA_STREAM, URI); } emailIntent .putExtra(android.content.Intent.EXTRA_TEXT, message); this .startActivity(Intent.createChooser(emailIntent, "Sending email..." )); } catch (Throwable t) { Toast.makeText( this , "Request failed try again: " + t.toString(), Toast.LENGTH_LONG).show(); } } } public void openGallery() { Intent intent = new Intent(); intent.setType( "image/*" ); intent.setAction(Intent.ACTION_GET_CONTENT); intent.putExtra( "return-data" , true ); startActivityForResult( Intent.createChooser(intent, "Complete action using" ), PICK_FROM_GALLERY); } } |
2)activity_main.xml
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | android:layout_width = "match_parent" android:layout_height = "match_parent" android:padding = "5dp" tools:context = ".MainActivity" > < RelativeLayout android:layout_width = "match_parent" android:layout_height = "match_parent" android:layout_margin = "5dp" android:padding = "5dp" > < EditText android:id = "@+id/editTextTo" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:layout_alignParentLeft = "true" android:layout_alignParentTop = "true" android:layout_margin = "5dp" android:hint = "Email Address!" android:inputType = "textEmailAddress" android:singleLine = "true" /> < EditText android:id = "@+id/editTextSubject" android:layout_width = "match_parent" android:layout_height = "wrap_content" android:layout_below = "@id/editTextTo" android:layout_margin = "5dp" android:hint = "Subject" android:singleLine = "true" /> < EditText android:id = "@+id/editTextMessage" android:layout_width = "match_parent" android:layout_height = "200dp" android:layout_below = "@id/editTextSubject" android:layout_margin = "5dp" android:gravity = "top|left" android:hint = "type message here!" android:inputType = "textMultiLine" /> < Button android:id = "@+id/buttonSend" android:layout_width = "80dp" android:layout_height = "50dp" android:layout_below = "@id/editTextMessage" android:layout_margin = "5dp" android:text = "Send" /> < Button android:id = "@+id/buttonAttachment" android:layout_width = "wrap_content" android:layout_height = "50dp" android:layout_alignParentRight = "true" android:layout_alignParentTop = "true" android:text = "attachment" /> </ RelativeLayout > </ ScrollView > |
3)AndroidManifest.xml
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <? xml version = "1.0" encoding = "utf-8" ?> package = "com.manish.sendemaildemo" android:versionCode = "1" android:versionName = "1.0" > < uses-sdk android:minSdkVersion = "8" android:targetSdkVersion = "16" /> < uses-permission android:name = "android.permission.INTERNET" /> < uses-permission android:name = "android.permission.READ_EXTERNAL_STORAGE" /> < uses-permission android:name = "android.permission.READ_INTERNAL_STORAGE" /> < uses-permission android:name = "android.permission.ACCESS_NETWORK_STATE" /> < application android:allowBackup = "true" android:icon = "@drawable/ic_launcher" android:label = "@string/app_name" android:theme = "@style/AppTheme" > < activity android:name = "com.manish.sendemaildemo.MainActivity" android:label = "@string/app_name" > < intent-filter > < action android:name = "android.intent.action.MAIN" /> < category android:name = "android.intent.category.LAUNCHER" /> </ intent-filter > </ activity > </ application > </ manifest > |
Thanks!
Reference: Send Email with Attachment in Android from our JCG partner Manish Srivastava at the Android Hub 4 you blog.
Thanks for the above tutorial,
But How can we read email with Attachments in Android App.
As we can read Complete Mail on Gmail’s Own App.
Thanks A lot again.
Waiting for Your Reply.
i’m new for android…. i need code for displaying DAT file……
i have one problem..
i added this to my app but i can’t make it work
i made new activity and added this to AndroidManifest
<activity
android:name=".ContactusActivity"
also i did the other but not working… it’s workin when i make contactusActivity the default activity… how i can run it along with the other activities?
thanks
Hello, how can we do the same thing but this time for a word document ??
How can i send an email in background in android studio?
I am getting errors with this code :(
in above code only image can attached how we do for any doc file or other file
open gallery()
{
emailIntent.setType(“*/*”);
}
Sir! The code almost works fine… But, whenever i send email or compose it.. It shows me “Successfully! sent”… (I had added a alert) but the message doesn’t actually sent.. I had checked mailbox and even Spambox but no message there sent via this app.
Please feedback this query with a valid solution.
how can i fetch this attachment in my android app from gmial. can you send me code.
Hi, your app basically just inserts data into another e-mail app, can you show how to send the e-mail from within the app (automated) using for example JavaMail API or some other method?
Hey Dear, i am new in android. i have made an application that communicate between user by text messages using sockets and xampp server. now i want to attach some files like image and send it to other user… please help me…. thanks for any help…
This simply doesn’t work. I get a null on the attachmentFile after choosing an image.
Have you figured it out?
showStatusIcon on inactive InputConnection
showStatusIcon on inactive InputConnection(plz help me with this error)
not able to attach file
It means that you get total discounts at the time
of subscription. You will also need to delegate your domain name to
the hosting space, details on this are provided
by your hosting provider. The amount of space required by a website should also
be considered while choosing a web host.
image file is working but word document is not attaching what can i do
im getting error in cursor.movetofirst() how to solve