2012-06-06 5 views
5

Ho un'applicazione in cui i file dal file system, i messaggi di posta elettronica da Outlook o gli allegati da Outlook vengono trascinati e rilasciati e il codice li salva in cartelle del file system per il caricamento in SharePoint in un secondo momento.Recupero del contenuto di DragDrop EventArgs per un allegato MSG incorporato da Outlook viene trascinato su un controllo

Questo è tutto bene a parte quando ho bisogno di identificare il contenuto di un allegato che è una e-mail (vale a dire un allegato di posta elettronica su una e-mail - incorporato MSG) dove i FileContents sono nulli. C'è un modo per accedere al contenuto dell'e-mail per salvarlo come file .msg?

Il seguente frammento di codice crea un MemoryStream correttamente per gli allegati che non sono messaggi di posta elettronica, ma è nulla per i tipi di e-mail:

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

risposta

0

io non sono in grado di riprodurre questo comportamento. Ho usato il tuo codice di esempio sopra e funziona perfettamente trascinando MSG incorporati dal pannello di anteprima di Explorer o dalla finestra di Inspector. Ci deve essere qualcosa che non stai condividendo con noi per quanto riguarda l'MSG incorporato. What is the attachment type?

Ti suggerisco anche review the CodeProject sample for Outlook Drag-n-Drop. Il tuo codice di esempio non considera quando più elementi vengono rilasciati sull'applicazione - prenderà solo il primo oggetto se l'utente seleziona (2) allegati, (3) email, (5) file, ecc.

+0

Sto tornando a questo codice ora come il problema ha sollevato di nuovo la testa. Il codice di esempio sopra faceva parte di un prototipo. Il codice effettivo riguarda più file. Ciò accade se creo un esempio di email e lo allego in una email a me stesso, quindi non sono sicuro di quali siano le differenze. Analizzerò il tipo di allegato. – Catherine

0

Ho un esteso controllo listbox i vb.net che gestisce le operazioni di trascinamento e rilascio incluse le e-mail da Outlook. Ho lo stesso problema che hai indicato nel tuo post originale. Quando si rilasciano allegati costituiti da file .msg incorporati, GetData restituisce FileContents null. Per ora, visualizzo semplicemente un messaggio all'utente indicando che dovrebbero provare a rilasciare l'allegato sul desktop e poi trascinarlo sull'applicazione. Questo sembra funzionare mentre il sistema operativo Windows si occupa di estrarre i dati e archiviarli come file .msg (che trascina e si abbassa correttamente da solo).

Ho anche trovato alcuni esempi di C# su come eseguire questa operazione, ma non sono riuscito a ricrearli in vb.net. Il più utile è stato su codeproject.com ed è stato chiamato "Outlook Drag and Drop in C#" di David Ewen, 28 luglio 2008. Si tratta di più allegati e allegati che sono messaggi di Outlook. Poiché è scritto in C#, forse potresti trovarlo di qualche utilità.

So che sto infrangendo le regole chiedendo, ma se hai trovato una risoluzione migliore di quella che sto offrendo sarei interessato.

+0

Se hai le tue domande, è perfettamente valido per pubblicarle. Altrimenti, considera questa domanda e segui più tardi. Puoi anche pubblicare la tua 'richiesta di aggiornamento' come riferimento per la domanda stessa. Benvenuti nel sito! –