2012-06-22 52 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