【问题标题】:Plain text attachment ends up in base64纯文本附件以 base64 结尾
【发布时间】:2012-09-30 03:32:26
【问题描述】:

在我的 Android 应用中,我试图让用户发送带有附件的电子邮件。附件是纯文本文件。我希望用户能够仅选择电子邮件应用程序来发送此电子邮件。

这是我正在使用的代码:

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("message/rfc822");
emailIntent.putExtra(Intent.EXTRA_SUBJECT,  "Some awesome email");
emailIntent.putExtra(Intent.EXTRA_TEXT, "Check out the attachment!");
emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + file.getAbsolutePath()));
listActivity.startActivity(Intent.createChooser(emailIntent, "Send email with...");

仅显示电子邮件应用程序,到目前为止一切顺利。当我使用 gmail 发送电子邮件时,电子邮件按原样到达,附件和所有内容。

但是,当我使用 k9 邮件发送电子邮件时,附件最终被编码为 base64。所以基本上,它是不可读的。

当我使用时

emailIntent.setType("text/plain");

附件可以正常到达(纯文本),但选择应用程序对话框包含非电子邮件应用程序。

我怎样才能两全其美?无论使用哪个电子邮件客户端,都只有选择应用程序对话框中的电子邮件应用程序和纯文本格式的文本文件附件?

【问题讨论】:

    标签: android email android-intent base64 email-attachments


    【解决方案1】:

    Intent.createChooser() 会返回一个普通的Intent。只需修改您返回的Intent。像这样的:

    Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
    emailIntent.setType("message/rfc822");
    emailIntent.putExtra(Intent.EXTRA_SUBJECT,  "Some awesome email");
    emailIntent.putExtra(Intent.EXTRA_TEXT, "Check out the attachment!");
    emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + file.getAbsolutePath()));
    Intent intent = Intent.createChooser(emailIntent, "Send email with...");
    intent.setType("text/plain");
    listActivity.startActivity(intent);
    

    【讨论】:

    • 如果我尝试这个,我会得到一个 ActivityNotFoundException(“没有找到处理 Intent 的活动”)
    猜你喜欢
    • 2011-07-12
    • 1970-01-01
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-04
    相关资源
    最近更新 更多