2011-02-18 77 views
1

我有一些在表格中有圖像的html。該表在UIWebView中顯示得很好。我採用相同的html並通過電子郵件發送(使用MFMailComposeViewController)。該代碼片段來構建HTML是:正確地創建monotouch:圖像沒有在電子郵件中顯示

html += "<tr><td><img src=\"reading.png\" align=left></td><td>"

表,但圖像只是有一個藍色的箱子一個問號。 (顯然,它找不到圖像,但爲什麼?)

我該如何解決這個問題?

+1

你也發送圖片嗎? –

+0

嗨Dimitris ...是的,我想,但它似乎沒有與電子郵件出於某種原因。 – SpokaneDude

回答

1

未找到路徑「reading.png」,這就是您看不到圖像的原因。

實際上有幾種可能的解決方案。

1)將圖片放到網址上,如http://yourweb address.com/reading.png,這個效果很好並且會顯示,所有的客戶端都支持這個,用戶只需要點擊「顯示圖片」,如果他/她在電子郵件客戶端默認禁用它。 2)第二種解決方案是將特定的圖像表示形式放到img標籤上,通過打開文件,讀取其內容並將其作爲base64數據添加到img的src中,可以做到這一點,但有大量樣本爲了這。

3)第三種是將它作爲附件添加到電子郵件中。這裏和網絡上的大量樣本又是如何做到這一點的。

從ObjectiveC轉換示例代碼對於Monotouch來說很簡單。

希望這會有所幫助。

+0

嗨帕維爾...我試過#3,因爲它似乎是最容易實現......沒有找到圖像......這是我所擁有的(在Monotouch中):\t \t \t \t _mail.AddAttachmentData(數據,「image/png」,「reading.png」); 記住,這是在iPhone上,我想我將不得不提供一個目錄,但沒有線索它將存儲圖像。 – SpokaneDude

+0

你不能這樣做,你需要的數據是圖像文件的實際內容,並編碼爲base64。 因此,從存儲中加載StreamReader,如下所示: var path = NSBundle.MainBundle.PathForResource(「reading」,「png」); var sr = new StreamReader(path); var content = sr.read < - 在此處讀取緩衝區 var base64 = Convert.ToBase64String(content); 然後將此添加到AddAttachmentData調用,然後將添加附件。 另請注意,在iOS設備上編碼大部分數據需要一些時間。 –

+0

被警告:GMail和其他一些電子郵件閱讀器不喜歡內聯圖像數據,因爲我剛剛經歷過:(因此,選項2也不是選項。 –

相關問題