2010-11-10 2 views
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...")); 
+0

возможно дубликат [проблема отправки электронной почты с вложением программно] (http://stackoverflow.com/questions/1247983/problem-sending-an-email-with-an-attachment-programmatically) –

+0

Как вы создали файл CSV? – rasen58

ответ

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-карта ... потому что, если они этого не сделают, функция экспорта будет для них бесполезной. – dfetter88

+0

задайте путь соответствующим образом, где бы вы ни сохраняли файл ... То, что я делал, это то, что «файл: //» неверен, вам нужно указать правильный путь, чтобы заставить код работать –

0

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

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

+0

. Вы подразумеваете, что используя ContentProvider, я могу избежать использования SDK для хранения моего CSV-файла? – dfetter88

+0

Да, реализация ContentProvider предоставит OutputStream из файла, который может находиться в ваших личных каталогах приложений. –

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:")); 
Смежные вопросы