无法使用意图 (Gmail) 从我的应用程序发送带有附件的电子邮件

Posted

技术标签:

【中文标题】无法使用意图 (Gmail) 从我的应用程序发送带有附件的电子邮件【英文标题】:Unable to send email with attachments from my app using intents (Gmail) 【发布时间】:2013-03-01 15:01:38 【问题描述】:

我正在尝试使用 Intent 发送包含在 sdcard 文件夹中的文件(.log 文件)。这是代码:

public void sendMail() 
            Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
            intent.setType("text/plain");
            intent.putExtra(Intent.EXTRA_EMAIL, new String[] "name.surname@gmail.com");
            intent.putExtra(Intent.EXTRA_SUBJECT, "Log files");
            intent.putExtra(Intent.EXTRA_TEXT, "body");
            //has to be an ArrayList
            ArrayList<Uri> uris = new ArrayList<Uri>();
            //convert from paths to android friendly Parcelable Uri's
            if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()))
                File root = Environment.getExternalStorageDirectory();

                File logfolder = new File(root, "log");


                for (String file : logfolder.list())
                    Uri u = Uri.parse(file);
                    uris.add(u);
                
                intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
                startActivity(Intent.createChooser(intent, new String("Send mail...")));
            

        

我从菜单中选择 Gmail。打开 Gmail 后,它会正确显示包含收件人、主题、文本和附件文件的邮件。邮件发送没有错误,但我收到一个状态栏通知,上面写着“无法显示附件”!事实上收件人正确接收电子邮件,但它没有附件。 我无法弄清楚是什么问题。为什么不发送附件?请帮帮我!!

【问题讨论】:

***.com/questions/9174423/… 【参考方案1】:

好的。我找到了解决方案。需要替换这个:

for (String file : logfolder.list())
   Uri u = Uri.parse(file);
   uris.add(u);

用这个:

for (File file : logfolder.listFiles())
    Uri u = Uri.fromFile(file);
    uris.add(u);

【讨论】:

Uri.parse() 切换到Uri.fromFile() 也对我有用! 为我工作。 Uri u = Uri.fromFile(file);谢谢:)

以上是关于无法使用意图 (Gmail) 从我的应用程序发送带有附件的电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

错误 SMTP 无法从 gmail 发送电子邮件

为什么我无法从我在GCP中托管的应用使用Gmail SMTP发送电子邮件?

无法通过电子邮件意图发送图像附件

电子邮件不会从 Mandrill 发送到 Gmail

使用 gmail 从本地主机发送电子邮件

PHPMailer 使用 SMTP 身份验证发送电子邮件,但 Gmail 仍然声称它无法验证发件人