| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| NotesDocument document = _database.CreateDocument(); |
| bool convertMime = _session.ConvertMime; |
| _session.ConvertMime = false; |
| |
| NotesMIMEEntity body = document.CreateMIMEEntity(); |
| |
| message.HasEmbeddedImages = false; |
| |
| |
| NotesMIMEEntity content = CreateMIMEChild(body, Tuple.Create("Content-Type", "multipart/related")); |
| NotesMIMEEntity text = CreateMIMEChild(content, Tuple.Create("Content-Type", "multipart/alternative")); |
| |
| |
| NotesMIMEEntity plainText = CreateMIMEChild(text); |
| |
| NotesStream plainStream = _session.CreateStream(); |
| plainStream.WriteText(ConvertHtmlToTextBody(message.Body)); |
| plainText.SetContentFromText(plainStream, "text/plain;charset=UTF-8", MIME_ENCODING.ENC_NONE); |
| |
| |
| NotesMIMEEntity htmlText = CreateMIMEChild(text); |
| NotesStream htmlStream = _session.CreateStream(); |
| RegisterComObjectForDisposal(htmlStream); |
| |
| |
| foreach (IAttachment attachment in message.Attachments) |
| { |
| string fileName = Path.GetFileName(attachment.FullFileName); |
| if(message.Body.Contains(string.Format("\"{0}\"", fileName))) |
| message.Body = message.Body.Replace(string.Format("\"{0}\"", fileName), string.Format("\"cid:{0}\"", fileName)); |
| } |
| |
| htmlStream.WriteText(message.Body); |
| htmlText.SetContentFromText(htmlStream, "text/HTML;charset=UTF-8", MIME_ENCODING.ENC_NONE); |
| |
| |
| foreach (IAttachment attachment in message.Attachments) |
| { |
| string fileName = Path.GetFileName(attachment.FullFileName); |
| |
| bool isEmbeddedFile = message.Body.Contains(string.Format("\"cid:{0}\"", fileName)); |
| |
| if(!isEmbeddedFile) |
| continue; |
| |
| message.HasEmbeddedImages = true; |
| |
| NotesStream fileStream = _session.CreateStream(); |
| if(fileStream.Open(attachment.FullFileName) && fileStream.Bytes > 0) |
| { |
| RegisterComObjectForDisposal(fileStream); |
| |
| NotesMIMEEntity attachment = CreateMIMEChild(content, |
| Tuple.Create("Content-Disposition", string.Format("inline; filename={0}", WebUtility.UrlEncode(fileName))), |
| Tuple.Create("Content-ID", string.Format("<{0}>", WebUtility.UrlEncode(fileName)))); |
| |
| string contentType = MimeTypesMap.GetMimeType(fileName); |
| attachment.SetContentFromBytes(fileStream, contentType, MIME_ENCODING.ENC_NONE); |
| attachment.EncodeContent(MIME_ENCODING.ENC_BASE64); |
| fileStream.Close(); |
| } |
| } |
| |
| |
| foreach (IAttachment attachment in message.Attachments) |
| { |
| string fileName = Path.GetFileName(attachment.FullFileName); |
| |
| bool isEmbeddedFile = message.Body.Contains(string.Format("\"cid:{0}\"", fileName)); |
| |
| if(isEmbeddedFile) |
| continue; |
| |
| NotesStream fileStream = _session.CreateStream(); |
| if(fileStream.Open(attachment.FullFileName) && fileStream.Bytes > 0) |
| { |
| RegisterComObjectForDisposal(fileStream); |
| |
| NotesMIMEEntity attachment = CreateMIMEChild(body, |
| Tuple.Create("Content-Disposition", string.Format("attachment; filename={0}", WebUtility.UrlEncode(fileName))), |
| Tuple.Create("Content-ID", string.Format("<{0}>", WebUtility.UrlEncode(fileName)))); |
| |
| string contentType = MimeTypesMap.GetMimeType(fileName); |
| attachment.SetContentFromBytes(fileStream, contentType, MIME_ENCODING.ENC_IDENTITY_BINARY); |
| } |
| } |
| |
| document.CloseMIMEEntities(true); |
| |
| _session.ConvertMime = convertMime; |
| document.Save(true, false); |