我们正在寻找一些开发指南/帮助,以实现从MS Outlook到我们的Web应用程序(当前正在开发)中的拖放功能。我们的最终目标是使我们的用户能够将电子邮件从其Outlook实例拖到在其浏览器中运行的应用程序中。就目前而言,我们可以通过文件(例如,从用户的桌面)实现此功能,而不能直接从Outlook中实现。
我们的应用程序正在使用Visual Studio for PHP和SQL Server 2012后端进行开发。
到目前为止的进展:
•我们的页面上有一个HTML5控件,该控件接收javascript onDrop / OnDropStart / etc事件,并能够枚举和检索其中的内容,文件或其他内容;
•从Outlook(在Outlook 2010中经过测试)拖动电子邮件(或其他对象,例如联系人)时,我们可以枚举纯文本数据,但不能枚举电子邮件的MIME内容(消息或附件)
•我们可以通过在内容上按Ctrl + A来枚举和检索电子邮件的纯文本和HTML内容,并将其拖到HTML控件中。
我们需要帮助的地方是了解如何从浏览器有权访问的拖放事件中访问和检索电子邮件的完整MIME内容。我们知道Visual Studio的PIO程序包可以为本地.NET应用程序启用该程序包,但是我们似乎无法将其用于Web应用程序。
由于该产品处于早期开发阶段,因此我们可以就如何最好地实现这一目标接受Microsoft的建议和指导,包括是否可以使用针对Web应用程序的.NET或ASP控件来完成此工作。
最佳答案
参见related SO post
从理论上讲,您可以为IE创建一个浏览器帮助程序对象(dll)(对于其他浏览器也可以执行此操作,请参阅Google Gears),该对象将在浏览器窗口中安装自己的拖放处理程序并保存旧的IDropTarget
对象。从Outlook拖动邮件时,您将获得CF_FILEDESCRIPTOR
和CF_FILECONTENTS
格式(IE无法理解),创建临时文件,并将假CF_HDROP
(IE知道如何处理)传递给浏览器提供的旧投递处理程序。
我做了两次(FF 3.6和IE),它看起来还不错。
还请记住,Outlook不会保留在原始MIME源中。拖动时,最好的办法是获取MSG格式的消息,然后可以使用扩展MAPI(C++或Delphi)或直接COM API(MSG是OLE存储文件)进行读取。