public void ChangeSmileLinks() { var base_smile_url = SmileToAttachmentConvertor.SmileBaseUrl; var doc = new HtmlDocument(); doc.LoadHtml(HtmlBody); var link_nodes = doc.DocumentNode.SelectNodes("//img[@src and (contains(@src,'" + base_smile_url + "'))]"); if (link_nodes != null) { var smile_convertor = new SmileToAttachmentConvertor(); foreach (var link_node in link_nodes) { var link = link_node.Attributes["src"].Value; var attach = smile_convertor.ToMailAttachment(link); link_node.SetAttributeValue("src", "cid:" + attach.contentId); if (AttachmentsEmbedded.All(x => x.contentId != attach.contentId)) { AttachmentsEmbedded.Add(attach); } } HtmlBody = doc.DocumentNode.OuterHtml; } }
public void ChangeAttachedFileLinksImages() { var baseSmileUrl = FileLinksToAttachmentConvertor.BaseUrl; var doc = new HtmlDocument(); doc.LoadHtml(HtmlBody); var linkNodes = doc.DocumentNode.SelectNodes("//img[@src and (contains(@src,'" + baseSmileUrl + "'))]"); if (linkNodes == null) { return; } var fileLinksConvertor = new FileLinksToAttachmentConvertor(); foreach (var linkNode in linkNodes) { var link = linkNode.Attributes["src"].Value; _logger.Info("ChangeAttachedFileLinksImages() Link to file link: {0}", link); var attach = fileLinksConvertor.ToMailAttachment(link); _logger.Info("ChangeAttachedFileLinksImages() Embedded file link contentId: {0}", attach.contentId); linkNode.SetAttributeValue("src", "cid:" + attach.contentId); if (AttachmentsEmbedded.All(x => x.contentId != attach.contentId)) { AttachmentsEmbedded.Add(attach); } } HtmlBody = doc.DocumentNode.OuterHtml; }
public void ChangeEmbededAttachmentLinks(int tenant, string id_user) { var base_attachment_folder = GetThisMailFolder(id_user); var doc = new HtmlDocument(); doc.LoadHtml(HtmlBody); var link_nodes = doc.DocumentNode.SelectNodes("//img[@src and (contains(@src,'" + base_attachment_folder + "'))]"); if (link_nodes != null) { foreach (var link_node in link_nodes) { var link = link_node.Attributes["src"].Value; _logger.Info("ChangeEmbededAttachmentLinks() Embeded attachment link for changing to cid: {0}", link); var file_link = HttpUtility.UrlDecode(link.Substring(base_attachment_folder.Length)); var file_name = Path.GetFileName(file_link); var attach = CreateEmbbededAttachment(file_name, link, file_link, id_user, tenant); AttachmentsEmbedded.Add(attach); link_node.SetAttributeValue("src", "cid:" + attach.contentId); _logger.Info("ChangeEmbededAttachmentLinks() Attachment cid: {0}", attach.contentId); } HtmlBody = doc.DocumentNode.OuterHtml; } }
public void ChangeEmbededAttachmentLinks(int tenant, string user) { var baseAttachmentFolder = MailStoragePathCombiner.GetMessageDirectory(user, StreamId); var doc = new HtmlDocument(); doc.LoadHtml(HtmlBody); var linkNodes = doc.DocumentNode.SelectNodes("//img[@src and (contains(@src,'" + baseAttachmentFolder + "'))]"); if (linkNodes == null) { return; } foreach (var linkNode in linkNodes) { var link = linkNode.Attributes["src"].Value; _logger.Info("ChangeEmbededAttachmentLinks() Embeded attachment link for changing to cid: {0}", link); var fileLink = HttpUtility.UrlDecode(link.Substring(baseAttachmentFolder.Length)); var fileName = Path.GetFileName(fileLink); var attach = CreateEmbbededAttachment(fileName, link, fileLink, user, tenant, MailboxId); AttachmentsEmbedded.Add(attach); linkNode.SetAttributeValue("src", "cid:" + attach.contentId); _logger.Info("ChangeEmbededAttachmentLinks() Attachment cid: {0}", attach.contentId); } HtmlBody = doc.DocumentNode.OuterHtml; }
public Message ToMimeMessage(int tenant, string user, bool load_attachments) { var mime_message = new Message { Date = DateTime.Now, From = new Address(From, string.IsNullOrEmpty(DisplayName) ? "" : Codec.RFC2047Encode(DisplayName)) }; if (Important) { mime_message.Priority = MessagePriority.High; } mime_message.To.AddRange(To.ConvertAll(address => { var addr = Parser.ParseAddress(address); addr.Name = string.IsNullOrEmpty(addr.Name) ? "" : Codec.RFC2047Encode(addr.Name); return(new Address(addr.Email, addr.Name)); })); mime_message.Cc.AddRange(Cc.ConvertAll(address => { var addr = Parser.ParseAddress(address); addr.Name = string.IsNullOrEmpty(addr.Name) ? "" : Codec.RFC2047Encode(addr.Name); return(new Address(addr.Email, addr.Name)); })); mime_message.Bcc.AddRange(Bcc.ConvertAll(address => { var addr = Parser.ParseAddress(address); addr.Name = string.IsNullOrEmpty(addr.Name) ? "" : Codec.RFC2047Encode(addr.Name); return(new Address(addr.Email, addr.Name)); })); mime_message.Subject = Codec.RFC2047Encode(Subject); // Set correct body if (Attachments.Any() || AttachmentsEmbedded.Any()) { foreach (var attachment in Attachments) { attachment.user = user; attachment.tenant = tenant; var attach = CreateAttachment(attachment, load_attachments); if (attach != null) { mime_message.Attachments.Add(attach); } } foreach (var embedded_attachment in AttachmentsEmbedded) { embedded_attachment.user = user; embedded_attachment.tenant = tenant; var attach = CreateAttachment(embedded_attachment, true); if (attach != null) { mime_message.EmbeddedObjects.Add(attach); } } } mime_message.BodyText.Charset = Encoding.UTF8.HeaderName; mime_message.BodyText.ContentTransferEncoding = ContentTransferEncoding.QuotedPrintable; mime_message.BodyText.Text = ""; mime_message.BodyHtml.Charset = Encoding.UTF8.HeaderName; mime_message.BodyHtml.ContentTransferEncoding = ContentTransferEncoding.QuotedPrintable; mime_message.BodyHtml.Text = HtmlBody; return(mime_message); }