2012-06-22 51 views
2

我正在使用htm格式的MailBee.NET對象在本地計算機上保存一些電子郵件。一個單獨的文件夾被用於使用電子郵件MESSAGEID上服務器例如在iframe中顯示本地htm文件?

d每個電子郵件創建:\電子郵件\ GmailId1380ec660e0e656a \ doc.htm

是從Gmail下載郵件。我也在數據庫中保存上述路徑,以便稍後使用。現在我試圖在iframe中顯示這個htm文件,但它不起作用。用戶點擊電子郵件,將他帶到read_email頁面,我試圖將上述路徑分配給iframe,但iframe保持空白。

emailMessage.Attributes.Add("src",commandReader["email_message_path"].ToString()); 

emailMessage是iframe的名稱和commandReader是正常SqlDataReader的其中我使用閱讀上面再提到分配該路徑來iframe的src屬性的文件的路徑,我已經放置在Page_Load事件這個代碼。

但正如我所說的iframe保持空白。請幫助我。

謝謝。

+0

發佈commandReader [「email_message_path」]。ToString()的結果。也許問題在那裏。 – collimarco

+0

使用Response.Write(commandReader [「email_message_page」]。ToString()),我得到D:\ Emails \ GmailId1380ec660e0e656a \ doc.htm – Ahmed

回答

2

本地文件以file URI方案引用。如果您的電子郵件消息的路徑只有D:\Emails\...那麼你就必須與file://加前綴:

file://D:\Emails\... 

注意,大多數瀏覽器會阻止你,包括本地文件遠程網站

+0

但該網站也運行在我的開發機器上,使用ASP.net開發服務器,部署它將運行在本地服務器上,郵件也將在其上下載(該網站僅供內部辦公使用)。控制檯應用程序定期下載電子郵件並製作數據庫條目(通過任務計劃程序運行),並使用該網站閱讀這些電子郵件。 – Ahmed

+0

在本地運行並不意味着您可以使用'file://'模式包含文件,實際上Mozilla的瀏覽器將**不遵循'file://'鏈接[如果頁面已經通過HTTP獲取](http://kb.mozillazine.org/Firefox_:_Issues_:_Links_to_Local_Pages_Don't_Work)。如果生產服務器是最終存儲電子郵件的遠程機器,'file://'將不起作用,因爲它總是**指客戶機的本地文件系統!我建議你通過HTTP提供HTML郵件文件。 – strnk

+0

好吧我測試了一些東西,如果我在簡單的htm文件中使用iframe,那麼它會成功調用其他htm(電子郵件文件),它甚至不需要file:///前綴,簡單路徑如D:\\ emails \\ emailID \\ doc.htm起作用。但是,如果我在aspx文件中使用相同的iframe,那麼它仍然是空白的。我嘗試過放置/刪除runat =「server」屬性,試圖對src路徑進行硬編碼,還嘗試使用你們建議的file:///前綴,但沒有任何效果。然而,加載一些http:// ....頁面在aspx文件中工作。在我放棄下載電子郵件的想法之前,我猜想它的安全問題,還有其他建議嗎? – Ahmed

0

您是否曾嘗試在文件路徑之前放置file:///? Like file:///D:\Emails\GmailId1380ec660e0e656a\doc.htm

+1

由於某種原因,即使路徑如您告訴我的文件:/// D:\ Emails \ GmailId1380ec660e0e656a \ doc一樣,它仍未顯示。htm,令人驚訝的是直接在iframe的src屬性中直接使用此路徑,但在Visual Studio中不起作用,如果您按Ctrl +單擊鏈接,它將打開正確的htm文件,這意味着路徑是正確的。這真的很奇怪。 – Ahmed

+0

@ user1469130如果你的路徑中間有一個'#','@',''''或']'會發生什麼? – TFischer