2012-06-06 7 views
5

Tengo una aplicación donde se arrastran y sueltan archivos del sistema de archivos, correos electrónicos de Outlook o archivos adjuntos de Outlook y el código los guarda en carpetas del sistema de archivos para cargar en SharePoint en un momento posterior.Recuperación de contenido de DragDrop EventArgs para un adjunto MSG incrustado de Outlook arrastrado a un control

Todo esto es bien aparte de cuando necesito identificar el contenido de un archivo adjunto que es un correo electrónico (es decir, un archivo adjunto de correo electrónico en un correo electrónico - incrustado MSG) donde los FileContents son nulos. ¿Hay alguna forma de que pueda acceder al contenido del correo electrónico para guardarlo como un archivo .msg?

El siguiente fragmento de código crea un MemoryStream correctamente para archivos adjuntos que no son mensajes de correo electrónico, pero es nula para este tipo de correo electrónico:

void DoDrop(object sender, DragEventArgs e) 
{ 
    var memoryStream = (MemoryStream) eventArgs.Data.GetData("FileContents", true); 
} 

Respuesta

0

No soy capaz de reproducir este comportamiento. Utilicé el código de ejemplo anterior y funciona perfectamente arrastrando MSG incrustados desde el panel de vista previa de Explorer o la ventana de Inspector. Debe haber algo que no nos está compartiendo con respecto al MSG incrustado. What is the attachment type?

También sugiero review the CodeProject sample for Outlook Drag-n-Drop. Su código de muestra no tiene en cuenta cuando se lanzan varios elementos a la aplicación: solo tomará el primer elemento si el usuario selecciona (2) archivos adjuntos, (3) correos electrónicos, (5) archivos, etc.

+0

Vuelvo a este código ahora ya que el problema ha resucitado. El código de muestra anterior era parte de un prototipo. El código real trata con múltiples archivos. Esto sucede si creo un correo electrónico de muestra y lo adjunto en un correo electrónico a mí mismo, así que no estoy seguro de cuáles son las diferencias. Investigaré el tipo de archivo adjunto. – Catherine

0

Tengo un control de cuadro de lista extendido i vb.net que maneja las operaciones de arrastrar y soltar, incluidos los correos electrónicos de Outlook. Tengo el mismo problema que indicaste en tu publicación original. Al eliminar archivos adjuntos que están formados por archivos .msg incrustados, GetData devuelve FileContents que son nulos. Por el momento, simplemente muestro un mensaje para el usuario indicándole que debería intentar soltar el archivo adjunto en el escritorio primero y luego arrástrelo a la aplicación. Esto parece funcionar ya que el sistema operativo Windows se encarga de extraer los datos y almacenarlos como un archivo .msg (que se arrastra y suelta correctamente por sí mismo).

También he encontrado algunos ejemplos de C# sobre cómo hacer esto pero no he tenido éxito en volver a crearlos en vb.net. El más útil fue en codeproject.com y fue llamado "Outlook Arrastrar y soltar en C#" por David Ewen, 28 de julio de 2008. Se trata tanto de archivos adjuntos múltiples y adjuntos que son mensajes de Outlook. Dado que está escrito en C#, tal vez lo encuentres de alguna utilidad.

Sé que estoy incumpliendo las normas al preguntar, pero si ha encontrado una resolución mejor que la que estoy ofreciendo, estaría interesado.

+0

Si tiene sus propias preguntas, es perfectamente válido para publicarlas. De lo contrario, considere publicar esta pregunta y hacer un seguimiento más adelante. También puede publicar su 'solicitud de actualización' como un recurso compartido en la pregunta en sí. Bienvenido al sitio! –

Cuestiones relacionadas