Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:发送带有附件的电子邮件:无法发送附件_Java_Android_Email - Fatal编程技术网

Java:发送带有附件的电子邮件:无法发送附件

Java:发送带有附件的电子邮件:无法发送附件,java,android,email,Java,Android,Email,我正在创建一个应用程序,但我遇到了一个问题。在我将一些数据插入名为“message.txt”的文件后,我无法通过电子邮件发送此文件,因为我的智能手机显示“无法发送附件”。我如何解决这个问题 代码如下: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String address = ... byte[] messagetosend =

我正在创建一个应用程序,但我遇到了一个问题。在我将一些数据插入名为“message.txt”的文件后,我无法通过电子邮件发送此文件,因为我的智能手机显示“无法发送附件”。我如何解决这个问题

代码如下:

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    String address = ...
    byte[] messagetosend = ...
    String filename = "message.txt";
    File file = new File(getExternalFilesDir(null), filename);
    FileOutputStream outputstream;
    try {
        outputstream = openFileOutput(filename,MODE_WORLD_READABLE);
        outputstream.write(messagetosend);
        outputstream.flush();
        outputstream.getFD().sync();
        outputstream.close();
    } catch (Exception e1) {
        e1.printStackTrace();
    }
    Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);
    sendIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{address});
    sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
    sendIntent.setType("*/*");
    startActivity(Intent.createChooser(sendIntent,"Send with..."));
    }

第三方应用程序无权访问该文件。使用
FileProvider
提供服务,或者将文件复制到而不是。

如果您已将文件保存为应用程序的专用文件, 应用程序可以看到是否正常,但外部电子邮件客户端将无法看到它。 您需要将其写入外部存储器,或将其公开。您将了解访问级别


或者尝试用JavaMail发送电子邮件,

是文件名,路径是正确的。你有权限读取文件吗?我怎么能有权限读取文件?尝试会有帮助吗?从来没有这样做过。@xyz:那篇博文与应用程序开发无关。我已经尝试将文件写入外部存储和Gmail(例如)识别附件,但当我单击按钮发送电子邮件时,通知栏上会显示一条通知,上面写着“无法发送附件”。你知道为什么吗?@PaoloGuizzardi:因为我看不到你的代码,所以我真的不知道。如果没有其他问题,请在
FileOutputStream
上调用
flush()
,然后调用
getFD().sync()
,然后调用
close()
,而不仅仅是
close()
,以确保在尝试调用其他应用程序处理该文件之前,所有字节都已写入磁盘,我已经添加了您告诉我的这些调用,并将“getFilesDir”修改为“getExternalFilesDir”。现在Gmail读取了文件,但告诉我“无法发送附件”。我真的不知道为什么。我试着将文件写入外部存储器,Gmail(例如)识别出附件,但当我点击按钮发送电子邮件时,通知栏上会显示一条通知,上面写着“无法发送附件”。你知道为什么吗?你真的需要用意图来做这类工作吗?如果你只想通过Gmail发送附件,那么使用java lib发送电子邮件。我想通过Gmail或任何其他邮件发送应用发送附件。我只知道这个方法。你能把java库链接给我吗?如果你的问题解决了。如果您需要更多帮助,请接受回答或告诉我。对不起,我需要使用意图。我已经用最后一个代码更新了代码。你能看看是否还有其他问题吗?