public bool Merge(RtfDocument mergeDoc) { try { var mergeFirst = mergeDoc.Content.IndexOf(@"\par", StringComparison.Ordinal); var mergeLast = mergeDoc.Content.LastIndexOf(@"\par", StringComparison.Ordinal) - 1; if ((mergeFirst < 0) || (mergeLast < 0)) { return false; } var docFirst = Content.LastIndexOf(@"}", StringComparison.Ordinal); if (docFirst < 0) { return false; } string migCont = mergeDoc.Content.Substring(mergeFirst, mergeLast - mergeFirst + 1); if (migCont.StartsWith(@"\pard", StringComparison.Ordinal)) { migCont = @"\par\par" + migCont.Remove(0, 5); } Content = Content.Insert(docFirst, migCont); return true; } catch (Exception) { return false; } }
public override void Execute(IEmailItem emailItem = null, int? lastExitCode = null) { if (AppliesTo(emailItem, lastExitCode)) { if (BodyFormat.Text == emailItem.Message.Body.BodyFormat) { StringBuilder sb = new StringBuilder(); sb.Append(emailItem.Message.GetBody()); sb.AppendLine(); sb.AppendLine(); sb.Append(Text); emailItem.Message.SetBody(sb.ToString()); } if (BodyFormat.Rtf == emailItem.Message.Body.BodyFormat) { var messageRtf = new RtfDocument(emailItem.Message.GetBody()); var mergeRtf = new RtfDocument(Rtf); if (messageRtf.Merge(mergeRtf)) { emailItem.Message.SetBody(messageRtf.Content); } } if (BodyFormat.Html == emailItem.Message.Body.BodyFormat) { var messageDoc = new HtmlDocument(); messageDoc.LoadHtml(emailItem.Message.GetBody()); var disclaimerDoc = new HtmlDocument(); disclaimerDoc.LoadHtml(Html); var messageBodyNode = messageDoc.DocumentNode.SelectSingleNode("//body"); var disclaimerBodyNode = disclaimerDoc.DocumentNode.SelectSingleNode("//body"); var brNode = messageDoc.CreateElement("br"); messageBodyNode.AppendChild(brNode); messageBodyNode.AppendChildren(disclaimerBodyNode.ChildNodes); emailItem.Message.SetBody(messageDoc.DocumentNode.InnerHtml); } if (null != Handlers && Handlers.Count > 0) { foreach (IHandler handler in Handlers) { handler.Execute(emailItem, lastExitCode); } } } }