puedo problemas por para movil enviar electronico documento desde correo como celular archivos archivo adjunto adjuntar android email email-attachments vcf

problemas - Cómo enviar un correo electrónico con un archivo adjunto en Android



no puedo adjuntar archivos en gmail android (4)

Quiero adjuntar el archivo .vcf con mi correo y enviarlo por correo. Pero el correo se recibe en la dirección sin el archivo adjunto. He usado el código siguiente pero el código para esto y no sé dónde estoy equivocado.

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); }


El ejemplo en el sitio oficial de Android funcionó para mí. Todo lo que se necesita para agregar el

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

como está hecho en la respuesta de Agarwal


Folder_name es el nombre del archivo en su almacenamiento interno de su teléfono. (ACTUALMENTE EXTERNAL_STORAGE). file_name es el nombre del archivo que desea enviar.

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); } }


SENDTO no es compatible con el archivo adjunto. He agregado mi respuesta usando Provider para leer la información del archivo. Está en 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() } } }


Use el siguiente código para enviar un correo

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