2017-10-20 134 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