2012-04-02 22 views
36

में फ़ाइल अटैचमेंट के साथ एक ईमेल कैसे भेजें, मैं अपने मेल के साथ .vcf फ़ाइल संलग्न करना चाहता हूं और मेल के माध्यम से भेजना चाहता हूं। लेकिन मेल संलग्नक के बिना पते पर प्राप्त होता है। मैंने नीचे दिए गए कोड का उपयोग किया है लेकिन इसके लिए कोड और मुझे नहीं पता कि मैं कहां गलत हूं।एंड्रॉइड

try {  
    String filelocation="/mnt/sdcard/contacts_sid.vcf";  
    Intent intent = new Intent(Intent.ACTION_SENDTO);  
    intent.setType("text/plain");  
    intent.putExtra(Intent.EXTRA_SUBJECT, "");  
    intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+filelocation));  
    intent.putExtra(Intent.EXTRA_TEXT, message);   
    intent.setData(Uri.parse("mailto:"));   
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

    activity.startActivity(intent); 
    activity.finish(); 
    } catch(Exception e) { 
    System.out.println("is exception raises during sending mail"+e); 
} 

उत्तर

69

पर आधिकारिक Android site मेरे लिए काम किया एक मेल

String filename="contacts_sid.vcf"; 
File filelocation = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), filename); 
Uri path = Uri.fromFile(filelocation); 
Intent emailIntent = new Intent(Intent.ACTION_SEND); 
// set the type to 'email' 
emailIntent .setType("vnd.android.cursor.dir/email"); 
String to[] = {"[email protected]"}; 
emailIntent .putExtra(Intent.EXTRA_EMAIL, to); 
// the attachment 
emailIntent .putExtra(Intent.EXTRA_STREAM, path); 
// the mail subject 
emailIntent .putExtra(Intent.EXTRA_SUBJECT, "Subject"); 
startActivity(Intent.createChooser(emailIntent , "Send email...")); 
+0

एक नज़र ... http: //stackoverflow.com/questions/12798001/android-how-to-send-multiple-contacts-are-attached-in-single-vcf-file- और – NagarjunaReddy

+3

भेजें आपको "हार्ड-कोडेड" पथ का उपयोग नहीं करना चाहिए क्योंकि वे डिवाइस के आधार पर बदल सकते हैं। मेरा सुझाव है कि आप फ़ाइल स्थान की परिभाषा को बदल रहे हैं: फ़ाइल फ़ाइल स्थान = नई फ़ाइल (Environment.getExternalStorageDirectory()। GetAbsolutePath(), फ़ाइल नाम); फिर परिभाषित करें: उरी पथ = Uri.from फ़ाइल (फ़ाइल स्थान); और इसे अपने इरादे में रखें: ईमेलइन्टेंट .putExtra (Intent.EXTRA_STREAM, पथ); –

+1

emailIntent.putExtra (Intent.EXTRA_STREAM, फ़ाइल स्थान) मेरे लिए फ़ाइल संलग्न नहीं करेगा, लेकिन ईमेल INTent.putExtra (Intent.EXTRA_STREAM, Uri.parse ("file: //" + filelocation) का उपयोग करके) फिलिप ने ठीक काम किया था। – andytrombone

4

उदाहरण भेजा नीचे दिए गए कोड का प्रयोग करें। सभी क्या यह

startActivity(Intent.createChooser(emailIntent , "Send email...")); 

जोड़ने की जरूरत है के रूप में अग्रवाल का जवाब

+0

में अधिक है, मेरे मामले में, यह मेल क्लाइंट पर जा रहा है लेकिन अटैचमेंट के बिना। प्रदर्शित टोस्ट "खाली फाइल नहीं भेज सकता"। मेरी फ़ाइल '/ data/data/com.example.app/files/temp.txt' पर संग्रहीत है और मैं इसे' emailIntent.putExtra (Intent.EXTRA_STREAM, Uri.parse ("सामग्री: /" + filePath का उपयोग करके पास कर रहा हूं)); // filePath /data/com.example.app/files/temp.txt ' – kAmol

+0

आप फ़ाइल नहीं भेज सकते क्योंकि यह आपके ऐप की कैश निर्देशिका में है, और केवल आपका ऐप उस निर्देशिका से पढ़ सकता है। आपको अन्य निर्देशिका का उपयोग करना चाहिए, जैसे पर्यावरण .getExternalStorageDirectory()। – Borzh

+0

प्रयुक्त पर्यावरण .getExternalStorageDirectory(), सत्यापित है कि पथ वैध था और उस फ़ाइल में अच्छा डेटा था .... लेकिन फिर भी वही त्रुटि संदेश (?) मिलता है। – CESDewar

4

फ़ोल्डर में किया अपने मोबाइल मेमोरी अपने फोन की में फ़ाइल का नाम है। (वास्तव में EXTERNAL_STORAGE)। file_name उस फ़ाइल का नाम है जिसे आप भेजना चाहते हैं।

private void ShareViaEmail(String folder_name, String file_name) { 
    try { 
     File Root= Environment.getExternalStorageDirectory(); 
     String filelocation=Root.getAbsolutePath() + folder_name + "/" + file_name; 
     Intent intent = new Intent(Intent.ACTION_SENDTO); 
     intent.setType("text/plain"); 
     String message="File to be shared is " + file_name + "."; 
     intent.putExtra(Intent.EXTRA_SUBJECT, "Subject"); 
     intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+filelocation)); 
     intent.putExtra(Intent.EXTRA_TEXT, message); 
     intent.setData(Uri.parse("mailto:[email protected]")); 
     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

     startActivity(intent); 
    } catch(Exception e) { 
     System.out.println("is exception raises during sending mail"+e); 
    } 
} 
1

SENDTO अनुलग्नक का समर्थन नहीं करता है। मैंने फ़ाइल जानकारी पढ़ने के लिए प्रदाता का उपयोग करके अपना जवाब जोड़ा है। Kotlin में यह। मेरे सवाल पर

fun shareFile(context: Context, filePath: File?, fileShareInfo: FileShareInfo) { 

    val intentFileShare = Intent(Intent.ACTION_SEND) 

    if (filePath!!.exists()) { 
     intentFileShare.type = fileShareInfo.fileType 
     val uri = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".provider", filePath) 
     intentFileShare.putExtra(Intent.EXTRA_STREAM, uri) 
     fileShareInfo.recipients?.let { 
      intentFileShare.putExtra(Intent.EXTRA_EMAIL, fileShareInfo.recipients) 
     } 
     intentFileShare.putExtra(Intent.EXTRA_SUBJECT, fileShareInfo.shareSubjectText) 
     fileShareInfo.shareExtraText?.let { 
      intentFileShare.putExtra(Intent.EXTRA_TEXT, AppViewUtil.fromHtml(fileShareInfo.shareExtraText!!)) 
     } 
     try { 
      ContextCompat.startActivity(context, Intent.createChooser(intentFileShare, fileShareInfo.shareTitle), null) 
     } catch (e: ActivityNotFoundException) { 
      Toast.makeText(context, context.getString(R.string.sharing_no_app_found), Toast.LENGTH_LONG).show() 
     } 

    } 
}