Отправка электронной почты с приложением из приложения
Я создаю приложение с функцией экспорта, которая преобразует пользовательские данные в CSV файл и позволяет пользователю отправлять его в виде прикрепления к кому-то (предположительно сами).
Файл CSV создан успешно, но когда я пытаюсь отправить электронное письмо, у меня возникла проблема. Устройство похоже, что оно отправит электронное письмо с соответствующим вложением, но когда письмо будет получено... нет прикрепления вообще...
Вот код, который я использую, чтобы отправить электронное письмо:
final Intent email = new Intent(android.content.Intent.ACTION_SEND);
email.setType("text/html");
email.putExtra(android.content.Intent.EXTRA_SUBJECT, getString(R.string.email_subject));
email.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml(getString(R.string.email_1)));
email.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///" + getString(R.string.csv_title)));
startActivity(Intent.createChooser(email, "Send mail..."));
Ответы
Ответ 1
i've done for send any file from SD card with mail attachment..
Intent sendEmail= new Intent(Intent.ACTION_SEND);
sendEmail.setType("rar/image");
sendEmail.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new
File("/mnt/sdcard/download/abc.rar")));
startActivity(Intent.createChooser(sendEmail, "Email:"));
Ответ 2
нужен правильный путь для вашего файла, если на SD-карте тогда...
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse
("file://"+Environment.getExternalStorageDirectory()+getString(R.string.csv_title)"));
Посмотрите здесь дополнительную информацию об установке соответствующего пути к файлу
http://developer.android.com/guide/topics/data/data-storage.html#filesExternal
Ответ 3
Приложение GMail принимает файл://Uris, только если они находятся на SD-карте... и на устройстве Android версии 1.6 у меня была даже проблема с тем, что он принимал только файл://sdcard/* Uris, тогда как реальное внешнее хранилище это конкретное устройство находится на другом пути.
В любом случае, у меня есть отличное поведение с вложениями, поскольку я предоставляю их через ContentProvider.