Отправка электронного письма с приложением из приложения

1

Я создаю приложение с функцией экспорта, которая преобразует пользовательские данные в 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..."));
Теги:
android-intent
email-attachments

3 ответа

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

Приложение GMail принимает файл://Uris, только если они находятся на SD-карте... и на устройстве Android версии 1.6 у меня была даже проблема с тем, что он принимал только файл://sdcard/* Uris, тогда как реальное внешнее хранилище это конкретное устройство находится на другом пути.

В любом случае, у меня есть отличное поведение с вложениями, поскольку я предоставляю их через ContentProvider.

  • 0
    Вы подразумеваете, что с помощью ContentProvider я могу избежать использования SD-карты для хранения моего CSV-файла?
  • 0
    Да, ваша реализация ContentProvider будет предоставлять OutputStream из файла, который может находиться в личных каталогах вашего приложения.
0

нужен правильный путь для вашего файла, если на 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

  • 0
    Что если его нет на SD-карте? Я думаю, что было бы неразумно просто предполагать, что у пользователя есть SD-карта ... потому что если они этого не сделают, то функция экспорта будет по существу бесполезной для них.
  • 0
    установить путь для того места, где вы сохраняете файл ... Я хотел сказать, что «file: //» неверен, вам нужно указать правильный путь, чтобы код работал

Ещё вопросы

Сообщество Overcoder
Наверх
Меню