示例#1
0
        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;
            }
        }
示例#2
0
        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;
            }
        }
示例#4
0
        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;
        }
示例#5
0
        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);
        }