【问题标题】:Attach an XLS (Excel) file to Email将 XLS (Excel) 文件附加到电子邮件
【发布时间】:2012-05-17 03:00:18
【问题描述】:

我的应用程序使用 intent 方法向用户发送电子邮件,作为导出 Excel 电子表格数据(由JExcell API 创建)的便捷方式。

文件包含在 SD 卡中名为 records 的文件夹中。

我尝试发送的文件是调用 measurments.xls。

在发送之前,我已经在代码中测试了文件是否存在。电子邮件编辑器显示一个附件,但是当我发送然后接收电子邮件时,附件不存在。

但是,如果我将 excel 文件替换为 png 图像,则会收到附件。那是什么给的??

下面是我用来发送电子邮件的代码,它本身就是一个类中的参数化静态方法。

    public static  void sendEmailWithAttachment(Context ctx, String to,String subject, String message, String fileAndLocation)
    {
        Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
        emailIntent.setType("text/plain");
        emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] {to}); 

        emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,  subject); 
        emailIntent.putExtra(android.content.Intent.EXTRA_TEXT,  message); 


          File file = new File(fileAndLocation);
         //  File file = getFileStreamPath();
           if (file.exists())
           {
               Log.v("Farmgraze", "Email file_exists!" );
           }
           else
           {
               Log.v("Farmgraze", "Email file does not exist!" );
           }


        Log.v("FarmGraze", "SEND EMAIL FileUri=" + Uri.parse("file:/"+ fileAndLocation));
        emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:/"+  fileAndLocation));

        ctx.startActivity(Intent.createChooser(emailIntent, "Send mail..."));
    }//end method

那么我需要做什么才能接收 xls 文件?更改方法代码第二行中的 mime 类型?如果有怎么办。任何有用的建议将不胜感激。

感谢阅读。

A.

【问题讨论】:

  • 您确定发送/接收邮件服务器不会删除某些附件吗?尝试将其发送到/从 gmail 帐户发送。我想更改 MIME 类型可能会有所帮助,但更可能是邮件服务器。
  • 嗯,不知道这是否有区别,但我通常会看到带有两个斜杠 file://file:/。试试看。
  • @Chuck Norris 我已经通过 GMail 网络应用程序将文件发送到我的工作电子邮件并且文件已通过,因此我们可以排除这种情况。
  • @Gophermofur 我有一个斜线,因为 fileAndLocation 字符串包含另一个作为其第一个字符。

标签: android email attachment excellibrary


【解决方案1】:

好吧,伙计们,我找到了解决方案。

问题是发送到URI的文件路径String,需要三个正斜杠。

如:

file:///sdcard/somefolder/some_file.xls.

对于 excel 文档,需要按如下方式设置类型:

emailIntent.setType("application/excel");

所以问题是一个两管齐下的问题。我通过this thread 知道了三个斜线解决方案,但由于它不起作用,我认为问题出在其他地方。

我还通过this webpage 了解了正确的 mime 类型,它列出了所有受支持的 mime 类型,可能对其他读者非常有用。

感谢您阅读并关注我的小问题,该问题现已解决。

【讨论】:

    【解决方案2】:

    我认为问题可能与您的 mime 类型有关。试试这个:

    MimeTypeMap mime = MimeTypeMap.getSingleton();     
    String mimeTypeForXLSFile = mime.getMimeTypeFromExtension(".xls");
    
    emailIntent.setType(mimeTypeForXLSFile);
    

    【讨论】:

    • 感谢您提出这个建议,但是,我收到一个“发送邮件”对话框,指出“没有应用程序可以执行此操作”。
    • 在模拟器上还是手机上?我在模拟器上试用时收到该消息,但在手机上运行良好。
    • 在手机上运行 2.3.3 的 Galaxy S2 和 Galaxy Ace
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-25
    • 2018-03-24
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    相关资源
    最近更新 更多