2017-10-20 94 views
2

我试图将图像附加到电子邮件消息,但是当本地电子邮件客户端打开时,它未附加。Codename one:将图像附加到电子邮件失败

Gmail客户端显示无法附加文件消息。

雅虎电子邮件客户端显示没有警告,但它也不附加图像。

我正在使用联想K6与Android 7.0设备进行测试。

这是我用来将图像附加到电子邮件的代码:

Message m = new Message(content); 
m.getAttachments().put(imgUri, "image/png"); 

试图与“图像/ JPEG”很好,但无济于事。

文件URI是这样的:

file:///storage/emulated/0/DCIM/Camera/IMG_20171015_170852.jpg 

我甚至试图将图像移动到位置FileSystemManager.getInstance().getAppHomePath() 下,但它仍然没有奏效。

即使我使用Capture对象创建新图像或从图库中选取现有图像,结果也是一样的。但是,如果我手动从电子邮件客户端附加图像,一切都按预期工作。

Android日志没有那么有用。

12月10日至20日:14:15.695 32049 32049Ê的Gmail:错误添加附件

12月10日至20日:14:15.695 32049 32049Ê的Gmail:DSH:无法创建本地附接

12月10日至20日:14:15.695 32049 32049Ê的Gmail:在dsi.a(的SourceFile:132)

12月10日至20日:14:15.695 32049 32049Ê的Gmail:在cmd.a(的SourceFile:1840)

10-20 12:14:15.695 32049 32049 E Gmail:at cmp.run(Sou rceFile:4)

12月10日至20日:14:15.695 32049 32049Ê的Gmail:在cmd.a(的SourceFile:665)

12月10日至20日:14:15.695 32049 32049Ê的Gmail:在CMD。一个(的SourceFile:422)

12月10日至20日:14:15.695 32049 32049Ê的Gmail:在cmd.N(的SourceFile:536)

12月10日至20日:14:15.695 32049 32049ËGmail的:在cmd.onCreate(SourceFile:181)

10-20 12:14:15.695 32049 32049 E Gmail:com.google.android.gm.ComposeActivityGmail.onCreate(SourceFile:4 0)

我用尽了选项。 有什么建议吗?

+0

什么是'm'? – greenapps

+0

m是codenameone消息对象。编辑原来的帖子来澄清这一点。 –

+0

你不应该暴露uris文件:// schema – Selvin

回答

3

您正在错误地添加附件。getAttachments()用于返回现有文件URI和MIME类型对,而不是添加附件的最佳方式。

试试这个:

m.setAttachment(imgUri); 
m.setAttachmentMimeType(Message.MIME_IMAGE_PNG); 

此外,检查URI路径,确保它是正确的,因为我可以看到这个file:///

我也会建议你把文件放在你的应用程序主目录下。

+0

我没有看到路径有什么问题。你的和OP一样。 – greenapps

+1

我一直在使用m.getAttachments()。put(imgUri,“image/png”);因为这是如何记录:https://www.codenameone.com/javadoc/com/codename1/messaging/Message.html –

+1

这工作。但是,如果想添加更多附件,则必须在每个setAttachment/setAttachmentMimeType之后调用m.getAttachments(),否则它将简单覆盖前面的添加。确实添加附件的一种非常特殊的方法。 –

0
Intent i = new Intent(Intent.ACTION_SEND); 
i.setType("text/plain"); 
i.putExtra(Intent.EXTRA_EMAIL , new String[]{"[email protected]"}); 
i.putExtra(Intent.EXTRA_SUBJECT, "attachment"); 
i.putExtra(Intent.EXTRA_TEXT , "PFA"); 
i.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(destinationFile));//image file 

startActivity(Intent.createChooser(i, "Send mail...")); 
+0

目前还不清楚你想说什么。请详细说明。 – greenapps

+1

这是一个用于发送带有附件的电子邮件的Android本机代码。 – Diamond