将XLS(Excel)文件附加到电子邮件

时间:2012-05-08 15:35:14

标签: android email attachment excellibrary

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

该文件包含在名为记录的文件夹中的SD卡上。

我尝试发送的文件是 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.

2 个答案:

答案 0 :(得分:6)

好的人只是为这个问题添加了闭包,我找到了解决方案。

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

如:

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

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

emailIntent.setType("application/excel");

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

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

感谢您阅读并对我现在解决的小问题感兴趣。

答案 1 :(得分:0)

我认为问题可能出在你的mime-type上。试试这个:

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

emailIntent.setType(mimeTypeForXLSFile);
相关问题