以编程方式在Android中发送带附件的电子邮件

时间:2016-03-02 04:08:55

标签: android android-intent outlook

我正在使用以下代码从我的Android应用发送电子邮件:

Intent email = new Intent(Intent.ACTION_SEND);
email.putExtra(Intent.EXTRA_EMAIL, new String[]{"email@yahoo.com"});          
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,Twitter,蓝牙发送此电子邮件。我只是想看电子邮件应用程序可供选择。

所以,我用email.setType(“message / rfc822”)替换email.setType("plain/text");;

现在它只显示电子邮件应用程序,适用于我的设备中安装的所有电子邮件应用程序,Outlook应用程序除外。 outlook应用程序无法正确发送附件。在接收端,我得到奇怪的字符而不是附件。

然后,我用email.setType(“application / octet-stream”)替换email.setType("message/rfc822");;

这解决了Outlook附件问题,但现在我无法使用默认的Android电子邮件应用程序发送电子邮件。它发送没有附件的电子邮件。

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

使用Intent.ACTION_SENDTO而不是Intent.ACTION_SEND。

答案 2 :(得分:0)

您只想过滤那些可以发送电子邮件并想要显示所有这些内容的应用。

对于您的查询,我找到了最佳答案。看看这个答案。

我认为this is what you want exactly