2011-03-16 14 views
6

Birden çok ek içeren bir e-posta göndermeye çalışıyorum.Birden fazla eki olan bir e-posta göndermek

Intent emailIntent = new Intent(Intent.ACTION_SEND_MULTIPLE); 
emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {"[email protected]", "[email protected]"}); 
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "The Subject"); 
emailIntent.putExtra(Intent.EXTRA_TEXT, "The Text"); 
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); 
emailIntent.setType("text/plain"); 
startActivity(Intent.createChooser(emailIntent, "Send Email Using: ")); 

ben gmail kullanarak e-posta göndermek, bu harika çalışıyor, ancak bir Nexus One üzerinde e-posta istemcisi kullanarak e-posta göndermek eğer eklentileri mesaja etmez. Bütün metin, konu, vb. Var, ama sadece ekleri yok. Benim e-posta hesabım bu önemli bir değişim hesabıdır ...

cevap

12

Bu onun iyi çalışması deneyin.

final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE); 
emailIntent.setType("plain/text"); 

ArrayList<Uri> uris = new ArrayList<Uri>(); 

String[] filePaths = new String[] {image1 Path,image2 path}; 
for (String file : filePaths) { 
    File fileIn = new File(file); 
    Uri u = Uri.fromFile(fileIn); 
    uris.add(u); 
} 

if (!(app_preferences.getString("email", "") == null || app_preferences.getString("email", "").equals(""))) { 
    emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {app_preferences.getString("email", "")});  
} 

emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject name"); 
emailIntent.putExtra(Intent.EXTRA_TEXT, "Please find the attachment."); 
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); 

startActivity(Intent.createChooser(emailIntent, "Email:")); 
+6

+2 android.content.Intent.ACTION_SEND_MULTIPLE bu iyi çalışıyor ... thanx –

+0

işe yarar .. teşekkürler –

+1

Intent.EXTRA_EMAIL adresine yeni bir String [] {} iletmezseniz, yalnızca alıcıyı bırakır alan boş ... –

0

Tüm bunları bir milyon kez denedim - işe koydu ama çok kötü bir uyarısı vardı. Bir Android hatası olduğunu öğrendim.

https://code.google.com/p/android/issues/detail?id=38303 

Error: ClassCastException warning in log when opening e-mail app with a body and multiple file attachments. 

Güncelleme:: bulunan geçici çözüm burada & fazla bilgi bir düzeltme var. yerine

sendIntent.putExtra(Intent.EXTRA_TEXT, "See attached CSV files."); 

bir ArrayList

ArrayList<String> extra_text = new ArrayList<String>(); 
extra_text.add("See attached CSV files."); 
sendIntent.putStringArrayListExtra(Intent.EXTRA_TEXT, extra_text); 

Voila gibi metin koy! Daha fazla istisna yok ve EXTRA_TEXT e-postanın gövdesi olarak biter.

DÜZENLEME: Sadece bu satırın hatadan kurtulduğunu belirten bir yorum - bence, ancak bir vücut için herhangi bir bilgi giremezsiniz. Benim durumumda iyi, ancak sadece log dosyalarını e-postayla gönderdiğimden. Uyarıdan kurtulmak için bu satırı kaldırın: 'sendIntent.putExtra (Intent.EXTRA_TEXT, "Ekli CSV dosyalarını görün.");'

+0

emailIntent.setType ("text/html") ise, çözümünüz HTML gövdesi için çalışır. – Nizzy

İlgili konular