【问题标题】:Sending email with attachment in android programmatically以编程方式在android中发送带有附件的电子邮件
【发布时间】:2016-03-02 04:08:55
【问题描述】:

我正在使用以下代码从我的 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("plain/text"); 替换为 email.setType("message/rfc822");

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

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

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

【问题讨论】:

标签: android android-intent outlook


【解决方案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);

【讨论】:

  • 但这正是我想要的。鉴于我期望找到这个问题的主题。但是,当我尝试它时,我得到“无法附加文件”,这意味着它在正确的轨道上但我可能有我的文件路径错误。我没有 SD 卡,不能假设有一张,并且该文件是由我的应用程序生成的。我正在写它,但我没有从外观上找到它。
【解决方案2】:

使用 Intent.ACTION_SENDTO 代替 Intent.ACTION_SEND。

【讨论】:

  • 是的,我试过了。这会发送不带附件的电子邮件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-18
  • 1970-01-01
  • 1970-01-01
  • 2012-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多