public AttachmentModel(NotesDocument document, NotesItem item) { if (!IsAttachmentItem(item)) { throw new ArgumentException("Item is not an attachment", nameof(item)); } var name = ((IEnumerable)item.Values).Cast <string>().First(); embeddedObject = document.GetAttachment(name); FileSize = embeddedObject.FileSize; Name = embeddedObject.Name; Source = embeddedObject.Source; EmbedType = embeddedObject.type; }
public bool GetMailAttachment(string strNotesUID) { bool bResult = false; NotesView pMailView; NotesDocument pMailDocument; try { if (this._strDataBase == "names.nsf") { this.pNotesDatabase = this.pNotesSession.GetDatabase(this._strDomain, this._strDataBase, false); } pMailView = this.pNotesDatabase.GetView("($inbox)"); pMailDocument = pMailView.GetFirstDocument(); while (pMailDocument != null) { if (pMailDocument.UniversalID == strNotesUID) { object[] arrItemObject = (object[])((NotesRichTextItem)pMailDocument.GetFirstItem("Body")).EmbeddedObjects; for (int i = 0; i < arrItemObject.Length; i++) { NotesEmbeddedObject pEmbeddedObject = (NotesEmbeddedObject)arrItemObject[i]; pEmbeddedObject.ExtractFile(System.AppDomain.CurrentDomain.BaseDirectory + "\\Attachment\\" + pEmbeddedObject.Source); FileStream pAttachmentStream = new FileStream(System.AppDomain.CurrentDomain.BaseDirectory + "\\Attachment\\" + pEmbeddedObject.Source, FileMode.Open, FileAccess.Read); byte[] pAttachmentContent = new byte[pAttachmentStream.Length]; pAttachmentStream.Read(pAttachmentContent, 0, pAttachmentContent.Length); pAttachmentStream.Close(); File.Delete(System.AppDomain.CurrentDomain.BaseDirectory + "\\Attachment\\" + pEmbeddedObject.Source); GlobalStruct[] pAttachmentStruct = new GlobalStruct[2]; pAttachmentStruct[0].oFieldsName = "Notes_AttachmentName"; pAttachmentStruct[0].oFiledsTypes = "String"; pAttachmentStruct[0].oFieldValues = pEmbeddedObject.Source; pAttachmentStruct[1].oFieldsName = "Notes_Attachment"; pAttachmentStruct[1].oFiledsTypes = "Byte[]"; pAttachmentStruct[1].oFieldValues = pAttachmentContent; pAttachmentContent = null; this.pInfoList.Add(pAttachmentStruct); } } pMailDocument = pMailView.GetNextDocument(pMailDocument); } bResult = true; } catch (Exception ex) { this.strMessage = ex.Message; bResult = false; this.pInfoList.Clear(); } finally { pMailDocument = null; pMailView = null; } if (this.pInfoList.Count == 0) { return(false); } return(bResult); }
/// <summary> /// 获取信件中的附件内容 /// </summary> /// <param name="strNotesUID"></param> /// <returns></returns> public bool GetMailAttachment(string strNotesUID) { bool bResult = false; NotesView pMailView = null; NotesDocument pMailDocument = null; int iCount = 0; try { if (this._strDataBase == "names.nsf") { this.pNotesDatabase = this._pNotesSession.GetDatabase(this._strDomain, this._strDataBase, false); } if (this.pNotesDatabase == null) { throw new Exception("不能打开数据库:" + this._strDataBase); } pMailView = this.pNotesDatabase.GetView("($inbox)"); pMailDocument = pMailView.GetFirstDocument(); CustomDataCollection pAttachmentStruct = new CustomDataCollection(StructType.CUSTOMDATA); while (pMailDocument != null) { if (pMailDocument.UniversalID == strNotesUID) { object[] arrItemObject = (object[])((NotesRichTextItem)pMailDocument.GetFirstItem("Body")).EmbeddedObjects; for (int i = 0; i < arrItemObject.Length; i++) { NotesEmbeddedObject pEmbeddedObject = (NotesEmbeddedObject)arrItemObject[i]; pEmbeddedObject.ExtractFile(System.AppDomain.CurrentDomain.BaseDirectory + "\\Attachment\\" + pEmbeddedObject.Source); FileStream pAttachmentStream = new FileStream(System.AppDomain.CurrentDomain.BaseDirectory + "\\Attachment\\" + pEmbeddedObject.Source, FileMode.Open, FileAccess.Read); byte[] pAttachmentContent = new byte[pAttachmentStream.Length]; pAttachmentStream.Read(pAttachmentContent, 0, pAttachmentContent.Length); pAttachmentStream.Close(); pAttachmentStream.Dispose(); File.Delete(System.AppDomain.CurrentDomain.BaseDirectory + "\\Attachment\\" + pEmbeddedObject.Source); pAttachmentStruct.Add(DataField.NOTES_ATTACHMENTNAME, DataFormat.STRING, pEmbeddedObject.Source); pAttachmentStruct.Add(DataField.NOTES_ATTACHMENTCOUNT, DataFormat.NONE, pAttachmentContent); pAttachmentStruct.AddRows(); //GlobalStruct[] pAttachmentStruct = new GlobalStruct[2]; //pAttachmentStruct[0].oFieldsName = "Notes_AttachmentName"; //pAttachmentStruct[0].oFiledsTypes = "String"; //pAttachmentStruct[0].oFieldValues = pEmbeddedObject.Source; //pAttachmentStruct[1].oFieldsName = "Notes_AttachmentCount"; //pAttachmentStruct[1].oFiledsTypes = "Byte[]"; //pAttachmentStruct[1].oFieldValues = pAttachmentContent; pAttachmentContent = null; this.pInfoList.Add(pAttachmentStruct); } } pMailDocument = pMailView.GetNextDocument(pMailDocument); iCount++; } this.pRecords = pAttachmentStruct; bResult = true; } catch (Exception ex) { this.strMessage = ex.Message; bResult = false; //this.pInfoList.Clear(); } finally { if (pMailDocument != null) { Marshal.ReleaseComObject(pMailDocument); } if (pMailView != null) { Marshal.ReleaseComObject(pMailView); } pMailDocument = null; pMailView = null; } if (iCount == 0) { return(false); } return(bResult); }
public static void parseFile(string path, string searchQuery, string type) { Domino.NotesSession session = null; session = new Domino.NotesSession(); session.Initialize(""); List <ContentDetail> lstContent = new List <ContentDetail>(); List <Resources> lstResource = new List <Resources>(); Domino.NotesDatabase db = session.GetDatabase("", path, false); Domino.NotesDocumentCollection col = db.Search(searchQuery, null, 0); for (int i = 0; i < col.Count; i++) { NotesDocument nd = col.GetNthDocument(i); Note note = new Note(); note.nodeId = nd.NoteID; note.fields = new Dictionary <string, object>(); List <string> ebpath = null; foreach (NotesItem item in nd.Items) { if (item.Name == "$FILE") { NotesItem file = nd.GetFirstItem("$File"); string fileName = ((object[])item.Values)[0].ToString(); NotesEmbeddedObject attachfile = (NotesEmbeddedObject)nd.GetAttachment(fileName); if (attachfile != null) { string p = Settings.Default.saveDirectory + nd.NoteID + "\\" + fileName; System.IO.Directory.CreateDirectory(Settings.Default.saveDirectory + nd.NoteID); if (ebpath == null) { ebpath = new List <string>(); } ebpath.Add(p); try { attachfile.ExtractFile(p); } catch (Exception en) { Console.WriteLine(en.Message); } } } else { try { if (item.type == IT_TYPE.RICHTEXT) { note.fields.Add(item.Name, item.Values); } else { note.fields.Add(item.Name, item.Values[0]); } } catch (Exception en) { Console.WriteLine(en.Message); } } } if (type == "resource") { Resources rs = new Resources(note); if (ebpath != null && ebpath.Count > 0) { foreach (string p in ebpath) { rs.path = rs.path + p + ";"; } } lstResource.Add(rs); } else { ContentDetail ct = new ContentDetail(note); lstContent.Add(ct); } } if (lstContent != null && lstContent.Count > 0) { string json = JsonConvert.SerializeObject(lstContent); //write string to file System.IO.File.WriteAllText(@Settings.Default.saveDirectory + "cms.txt", json); } if (lstResource != null && lstResource.Count > 0) { string json = JsonConvert.SerializeObject(lstResource); //write string to file System.IO.File.WriteAllText(@Settings.Default.saveDirectory + "resource.txt", json); } }