2011-03-16 18 views
6

estoy tratando de enviar un correo electrónico con varios archivos adjuntos.enviando un correo electrónico con varios archivos adjuntos

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

Esto funciona muy bien cuando envío el correo electrónico a través de Gmail, pero no adjunta los archivos adjuntos si envío el correo electrónico utilizando el cliente de correo electrónico en un Nexus One. Tiene todo el texto, el tema, etc. ... pero simplemente no hay archivos adjuntos. La cuenta de correo electrónico que tengo es una cuenta de cambio si eso importa ...

Respuesta

12

Prueba esto funciona bien.

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 esto funciona bien ... thanx –

+0

funciona ... gracias –

+1

Si no pasa un nuevo String [] {} a Intent.EXTRA_EMAIL, simplemente dejará el destinatario campo vacío ... –

0

Intenté todo esto un millón de veces - lo puso a trabajar pero tenía una advertencia desagradable. Descubrí que es un error de Android. Hay una solución & información más aquí:

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. 

Actualización: encontrado solución. En lugar de

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

poner el texto como un ArrayList

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

Voila! No más excepciones, y EXTRA_TEXT termina como el cuerpo del correo electrónico.

EDITAR: Creo que el simple hecho de comentar esta línea elimina el error, pero no se puede ingresar ninguna información para un cuerpo. En mi caso, eso está bien, ya que solo estoy enviando archivos de registro por correo electrónico. Elimine esta línea para eliminar la advertencia: 'sendIntent.putExtra (Intent.EXTRA_TEXT, "Vea archivos CSV adjuntos.");'

+0

if emailIntent.setType ("text/html"), su solución funciona para HTML. – Nizzy

Cuestiones relacionadas