2011-03-16 17 views
6

Próbuję wysłać wiadomość e-mail z wieloma załącznikami.wysyłanie wiadomości e-mail z wieloma załącznikami

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: ")); 

Działa to doskonale, kiedy wysłać wiadomość e-mail za pomocą Gmaila, ale nie dołączyć załączniki, jeśli mogę wysłać wiadomości e-mail za pomocą klienta poczty na Nexus One. Ma cały tekst, temat, itd ... ale nie ma żadnych załączników. Konto e-mail, które mam, jest kontem wymiany, jeśli to ma znaczenie ...

Odpowiedz

12

Wypróbuj To działa dobrze.

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 to działa prawidłowo ... thanx –

+0

to działa .. Dzięki –

+1

Jeśli nie zdać new String [] {} do Intent.EXTRA_EMAIL będzie to po prostu pozostawić odbiorcę pole puste ... –

0

Wypróbowałem to wszystko milion razy - zadziałało, ale miałem paskudne ostrzeżenie. Odkryłem, że to błąd Androida. Jest Rozwiąż & więcej informacji tutaj:

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. 

Aktualizacja: znaleziono obejście. Zamiast

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

umieścić tekst jak ArrayList

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

Voila! Żadnego wyjątku, a EXTRA_TEXT kończy się jako treść wiadomości e-mail.

EDYCJA: Myślę, że po prostu komentując tę ​​linię pozbywam się błędu - ale wtedy nie dostajesz żadnych informacji o ciele. W moim przypadku jest to jednak w porządku, ponieważ wysyłam tylko pliki dziennika e-mail. Usuń tę linię, aby pozbyć się ostrzeżenia: "sendIntent.putExtra (Intent.EXTRA_TEXT," Zobacz załączone pliki CSV. "); '

+0

jeśli emailIntent.setType ("text/html"), twoje rozwiązanie działa dla treści HTML. – Nizzy

Powiązane problemy