public override List <ApplicationItemProperty> GetApplicationFields(string filePath) { List <ApplicationItemProperty> returnApplicationItemProperties = new List <ApplicationItemProperty>(); List <ApplicationItemProperty> applicationItemProperties = ConfigurationManager.GetInstance().GetApplicationItemProperties(ApplicationTypes.Outlook); Microsoft.Office.Interop.Outlook.Application outlook = new Microsoft.Office.Interop.Outlook.Application(); Microsoft.Office.Interop.Outlook.MailItem mailItem = null; if (filePath == null) { mailItem = (Microsoft.Office.Interop.Outlook.MailItem)outlook.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem); } else { mailItem = (Microsoft.Office.Interop.Outlook.MailItem)outlook.CreateItemFromTemplate(filePath); } Microsoft.Office.Interop.Outlook.ItemProperties properties = mailItem.ItemProperties; for (int i = 0; i < properties.Count; i++) { Microsoft.Office.Interop.Outlook.ItemProperty property = properties[i]; ApplicationItemProperty applicationItemProperty = applicationItemProperties.FirstOrDefault(item => item.Name == property.Name); if (applicationItemProperty != null) { ApplicationItemProperty returnApplicationItemProperty = new ApplicationItemProperty( applicationItemProperty.Name, applicationItemProperty.DisplayName, applicationItemProperty.Type); returnApplicationItemProperty.Value = Convert.ChangeType(property.Value, applicationItemProperty.Type); returnApplicationItemProperties.Add(returnApplicationItemProperty); } } #region Writing the xml for field definitions /* * System.Xml.XmlTextWriter writer = new System.Xml.XmlTextWriter("c:\\fields.xml", Encoding.UTF8); * // start writing! * writer.WriteStartDocument(); * writer.WriteStartElement("Outlook"); * writer.WriteStartElement("MailItem"); * writer.WriteStartElement("ItemProperties"); * System.Xml.XmlDocument document = new System.Xml.XmlDocument(); * System.Xml.XmlNode mainNode = document.CreateNode(System.Xml.XmlNodeType.Element, "MailItem", "Outlook"); * for (int i = 0; i < properties.Count; i++) * { * writer.WriteStartElement("Property"); * writer.WriteAttributeString("Name", properties[i].Name); * writer.WriteAttributeString("DisplayName", properties[i].Name); * writer.WriteAttributeString("Type", properties[i].Type.ToString()); * writer.WriteEndElement(); * } * writer.WriteEndElement(); * writer.WriteEndElement(); * writer.WriteEndElement(); * writer.WriteEndDocument(); * writer.Close(); */ #endregion return(returnApplicationItemProperties); }
protected override List <UploadItem> SetUploadItemFilePath(string sourceFolder, string filePath, UploadItem uploadItem) { if (ConfigurationManager.GetInstance().Configuration.OutlookConfigurations.SaveAsWord&& Path.GetExtension(filePath) == ".msg") { List <UploadItem> additionalItems = new List <UploadItem>(); Microsoft.Office.Interop.Outlook.Application outlook = new Microsoft.Office.Interop.Outlook.Application(); Microsoft.Office.Interop.Outlook.MailItem mailItem = (Microsoft.Office.Interop.Outlook.MailItem)outlook.CreateItemFromTemplate(filePath); string newFileName = filePath.Substring(0, filePath.LastIndexOf('.')) + ".doc"; mailItem.SaveAs(newFileName, Microsoft.Office.Interop.Outlook.OlSaveAsType.olDoc); foreach (Microsoft.Office.Interop.Outlook.Attachment attachment in mailItem.Attachments) { string extensionName = String.Empty; string filenameWithoutExtension = String.Empty; string fileName = String.Empty; GetFileNameAndExtension(attachment.FileName, out filenameWithoutExtension, out extensionName); filePath = GetUnuqieFileName(sourceFolder, filenameWithoutExtension, extensionName, out fileName);//keep original name attachment.SaveAsFile(filePath); UploadItem attachmentItem = new UploadItem(); attachmentItem.Folder = uploadItem.Folder; attachmentItem.ContentType = uploadItem.ContentType; attachmentItem.FieldInformations = uploadItem.FieldInformations; attachmentItem.FilePath = filePath; additionalItems.Add(attachmentItem); } uploadItem.FilePath = newFileName; return(additionalItems); } else { base.SetUploadItemFilePath(sourceFolder, filePath, uploadItem); return(null); } }