Enviar un correo electrónico con varios archivos adjuntos
Estoy tratando de enviar 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 con gmail, pero no adjunta los datos 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 no hay adjuntos. La cuenta de correo electrónico que tengo es una cuenta de intercambio si eso importa …
- ACTION_SENDTO no funciona
- Extras en el intento de correo electrónico - Preferencias XML
- Android, ¿Cómo enviar correo electrónico HTML y obligar a Android a enviarlo a través de G-Mail, no otras aplicaciones?
- Cómo adjuntar un PDF a un correo electrónico de la aplicación Android - El tamaño del archivo es cero
- Envío de múltiples adjuntos en el correo electrónico: android.intent.extra.STREAM espera Parcelable
- Cómo adjuntar archivo pdf en un correo electrónico
- Intención de correo electrónico de Android no envío de archivo adjunto
- Android varios archivos adjuntos de correo electrónico con Intent
- Android Intent: Enviar un correo electrónico con adjunto
- Validación de correo electrónico en EditText - Android
- Inicio de mi aplicación mediante el URI de intención
- Android Creación de un archivo de entrada residente en la memoria que se puede adjuntar a un correo electrónico
- Reclamo de correo electrónico de Android
Pruebe esto su trabajo 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:"));
Intenté todo esto un millón de veces – lo consiguió para trabajar pero tenía una advertencia desagradable. Descubrí que es un error de Android. Hay una corrección y más información 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: solución encontrada. En lugar de
sendIntent.putExtra(Intent.EXTRA_TEXT, "See attached CSV files.");
Coloque el texto como 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 excepción, y el EXTRA_TEXT termina como el cuerpo del correo electrónico.
EDIT: Creo que simplemente comentar esta línea se deshace del error – pero entonces usted no consigue entrar cualquier información para un cuerpo. En mi caso, eso está bien, ya que sólo estoy enviando archivos de registro por correo electrónico. Elimine esta línea para eliminar la advertencia: 'sendIntent.putExtra (Intent.EXTRA_TEXT, "Ver archivos CSV adjuntos.");'
- Cómo obtener el tamaño total de la pantalla en un dispositivo android programaticamente
- Cómo obtener una lista de reproductores multimedia instalados