2016-03-02 4 views
4

Я использую следующий код для отправки электронной почты из моего андроида приложения:Отправка электронной почты с вложением в андроиде программно

Intent email = new Intent(Intent.ACTION_SEND); 
email.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"});   
email.putExtra(Intent.EXTRA_SUBJECT, "subject"); 
email.putExtra(Intent.EXTRA_TEXT, "message"); 
emailIntent.putExtra(Intent.EXTRA_STREAM, uri); 
email.setType("plain/text"); 
startActivity(Intent.createChooser(email, "Choose an Email App:")); 

Это прекрасно работает для всех сообщений электронной почты отправки приложений, но он показывает слишком много вариантов, таких как facebook, твиттер, Bluetooth, чтобы отправить это письмо. Я просто хотел видеть приложения электронной почты на выбор.

Итак, я заменил email.setType("plain/text"); на email.setType ("message/rfc822");

Теперь он показывает только приложения электронной почты и отлично работает для всех приложений электронной почты, установленных на моем устройстве, кроме приложения Outlook. Приложение Outlook не отправляет вложение правильно. В конце приема я получаю странные символы вместо прикрепленного файла.

Затем я заменил email.setType("message/rfc822"); на email.setType («application/octet-stream»);

Это решение проблемы с Outlook Outlook, но теперь я не могу отправлять электронные письма с помощью приложения электронной почты по умолчанию для Android. Он отправляет электронную почту без вложения.

+0

Вы проверили это http://stackoverflow.com/questions/8280166/intent-with-settypemessage-rfc822-for-android-api-level-before-2-3-3 – Rahul

+0

Да, я пробовал этот путь отправки писем. Это игнорирует привязанность. – Adnan

ответ

0

Используйте Intent.ACTION_SENDTO вместо Intent.ACTION_SEND.

+0

Да, я пробовал это. Это отправляет письма без вложения. – Adnan

1

Используйте этот код, чтобы прикрепить файл и отправить по электронной почте

Intent email = new Intent(Intent.ACTION_SEND); 
email.putExtra(Intent.EXTRA_SUBJECT, "subject"); 
email.putExtra(Intent.EXTRA_TEXT, "text"); 
Uri uri = Uri.parse("file://" + myFile.getAbsolutePath()); 
email.putExtra(Intent.EXTRA_STREAM, uri); 
email.setType("message/rfc822"); 
startActivity(email); 
+0

Пожалуйста, внимательно прочитайте вопрос перед ответом. – Adnan

+0

Но его ТОЧНО, что я ищу. Учитывая этот вопрос, я ожидал найти эту проблему. Однако, когда я попробовал это, я получил «не мог прикреплять файл», что означает его на правильном пути, но у меня, вероятно, неправильные пути к файлу. У меня нет SD-карты и не могу принять ее, и файл создается моим приложением. Я пишу это, но я не нахожу его взглядом. –

0

Вы просто хотите, чтобы отфильтровать те приложения, которые могут отправлять сообщения электронной почты и хотят, чтобы показать их все.

Для вашего запроса я нашел лучший ответ. Взгляните на этот ответ.

я думаю this is what you want exactly.