public EUEmailUploadFile(string filePath, Microsoft.Office.Interop.Outlook.MailItem mailItem, EUFieldInformations fieldInformations, bool isListItemAndAttachment, SaveFormatOverride saveFormatOverride) // JOEL JEFFERY 20110710 - added safeFormatOverride { FilePath = filePath; MetaData = new EUEmailMetaData(mailItem); // JOEL JEFFERY 20110711 -- mailItem == null? surely not? if (mailItem == null) { //Subject = mailItem.Subject; //EntryID = mailItem.EntryID; //Body = mailItem.Body; } else { // JOEL JEFFERY 20110711 -- moved here Subject = mailItem.Subject; EntryID = mailItem.EntryID; Body = mailItem.Body; SentOn = mailItem.SentOn; IsEmail = true; } //MailItem = mailItem; UniqueID = Guid.NewGuid(); FieldInformations = fieldInformations; IsListItemAndAttachment = isListItemAndAttachment; // JOEL JEFFERY 20110710 SaveFormatOverride = saveFormatOverride; }
/// <summary> /// Copies or moves the email to folder. /// </summary> /// <param name="format">The format.</param> private void CopyOrMoveEmailToFolder(SaveFormatOverride format) // JOEL JEFFERY 20110708 added SaveFormatOverride format { if (DragDropTargetNode == null) { return; } EUFolder dragedFolder = DragDropTargetNode.Tag as EUFolder; if (dragedFolder == null) { return; } SharePointListViewControl sharePointListViewControl = GetCurrentSharePointExplorerPane().sharePointListViewControl; if (sharePointListViewControl.SelectedFolder == null || sharePointListViewControl.SelectedFolder.UniqueIdentifier != dragedFolder.UniqueIdentifier || sharePointListViewControl.SelectedFolder.Title != dragedFolder.Title) { sharePointListViewControl = null; } emailItems = new List <MailItem>(); if (DragDropArgs.Data.GetDataPresent("RenPrivateSourceFolder") == false) // if it's not a folder??? { // JON SILVER SAYS... I've never been able to get this bit to fire... therefore under exactly what circumstances would e.Data.GetDataPresent("RenPrivateSourceFolder") == false ?? emailItems.Add(Application.ActiveExplorer().Selection[1] as Outlook.MailItem); } else { // JON SILVER SAYS... we always seem to end up here regardless of what's dropped for (int i = 0; i < Application.ActiveExplorer().Selection.Count; i++) { Outlook.MailItem item = Application.ActiveExplorer().Selection[i + 1] as Outlook.MailItem; emailItems.Add(item); } } bool isListItemAndAttachmentMode = false; EUFieldInformations fieldInformations = null; EUFieldCollection fields = null; if (dragedFolder as EUFolder != null && ((EUFolder)dragedFolder).IsDocumentLibrary == false) { if (((EUFolder)dragedFolder).EnableAttachments == false) { MessageBox.Show("In order to upload email, you need to enable attachment feature in this list."); return; } isListItemAndAttachmentMode = true; } List <EUEmailUploadFile> emailUploadFiles = CommonManager.GetEmailUploadFiles(emailItems, DragDropArgs, isListItemAndAttachmentMode, format); // JON SILVER JUNE 2011 if (!addedEventHandler) { EUEmailManager.UploadFailed += new EventHandler(SharePointOutlookConnector_UploadFailed); EUEmailManager.UploadSucceeded += new EventHandler(SharePointOutlookConnector_UploadSucceeded); addedEventHandler = true; } // JOEL JEFFERY 20110712 try { // JON SILVER JUNE 2011 EUEmailManager.UploadEmail(sharePointListViewControl, dragedFolder, DragDropArgs, emailUploadFiles, isListItemAndAttachmentMode); } catch (System.Exception ex) { if (UploadFailed != null) { UploadFailed(this, new EventArgs()); } throw ex; } }
public static List <EUEmailUploadFile> GetEmailUploadFiles(List <Microsoft.Office.Interop.Outlook.MailItem> emailItems, DragEventArgs e, bool isListItemAndAttachmentMode, SaveFormatOverride saveFormatOverride) // JOEL JEFFERY 20110708 added SaveFormatOverride format { List <EUEmailUploadFile> emailUploadFiles = new List <EUEmailUploadFile>(); string sourceFolder = EUSettingsManager.GetInstance().CreateATempFolder(); if (e.Data.GetDataPresent("RenPrivateSourceFolder") == false) { MemoryStream memoryStream = (MemoryStream)e.Data.GetData("FileGroupDescriptor"); memoryStream.Seek(76, SeekOrigin.Begin); byte[] fileName1 = new byte[256]; memoryStream.Read(fileName1, 0, 256); System.Text.Encoding encoding = System.Text.Encoding.ASCII; string fileName = encoding.GetString(fileName1); fileName = fileName.TrimEnd(new char[] { '\0' }); string extensionName = String.Empty; string filenameWithoutExtension = String.Empty; CommonManager.GetFileNameAndExtension(fileName, out filenameWithoutExtension, out extensionName); string filePath = SharePointManager.GetUnuqieFileName(sourceFolder, filenameWithoutExtension, extensionName, out fileName); memoryStream = (MemoryStream)e.Data.GetData("FileContents"); FileStream fs = new FileStream(filePath, FileMode.Create); memoryStream.WriteTo(fs); fs.Close(); emailUploadFiles.Add(new EUEmailUploadFile(filePath, emailItems[0], null, isListItemAndAttachmentMode)); } else { for (int i = 0; i < emailItems.Count; i++) { Microsoft.Office.Interop.Outlook.MailItem item = emailItems[i] as Microsoft.Office.Interop.Outlook.MailItem; if (item != null) { string subject = (item.Subject == null ? "Email Message" : item.Subject); //if we are to upload the email as a .msg if (saveFormatOverride == SaveFormatOverride.Email || (saveFormatOverride == SaveFormatOverride.None && EUSettingsManager.GetInstance().Settings.SaveAsWord == false && isListItemAndAttachmentMode == false)) // JOEL JEFFERY 20110708 added format == SaveFormatOverride check { string fileName = subject + ".msg"; string filePath = SharePointManager.GetUnuqieFileName(sourceFolder, item.Subject, "msg", out fileName); item.SaveAs(filePath, OlSaveAsType.olMSG); emailUploadFiles.Add(new EUEmailUploadFile(filePath, item, null, isListItemAndAttachmentMode)); } else //if we are to upload the email as .doc and attachments { string fileName = String.Empty; string filePath = SharePointManager.GetUnuqieFileName(sourceFolder, subject, "doc", out fileName); item.SaveAs(filePath, OlSaveAsType.olDoc); EUEmailUploadFile emailUploadFile = new EUEmailUploadFile(filePath, item, null, isListItemAndAttachmentMode, saveFormatOverride); foreach (Attachment attachment in item.Attachments) { string extensionName = String.Empty; string filenameWithoutExtension = String.Empty; CommonManager.GetFileNameAndExtension(attachment.FileName, out filenameWithoutExtension, out extensionName); filePath = SharePointManager.GetUnuqieFileName(sourceFolder, filenameWithoutExtension, extensionName, out fileName); attachment.SaveAsFile(filePath); emailUploadFile.Attachments.Add(new EUEmailUploadFile(filePath, item, null, isListItemAndAttachmentMode, saveFormatOverride)); } emailUploadFiles.Add(emailUploadFile); } } } } return(emailUploadFiles); }