private async Task <SLChatPostMessageResult> PostCommit(IMAPMessage imapMsg, string channelID) { StringBuilder sb = new StringBuilder(""); sb.Append(cCommitStartLine); sb.Append(imapMsg.Uid); sb.Append(cCommitFieldsSeparator); sb.Append(cCommitFromName); sb.Append(imapMsg.From[0].Address); sb.Append(cCommitFieldsSeparator); sb.Append(cCommitSubjectName); sb.Append(imapMsg.Subject); sb.Append(cCommitEndLIne); StringBuilder attachments = new StringBuilder(); attachments.Append("[{"); attachments.Append("\"text\":"); string commitBody = "```" + SLNormalizer.EscapeJSONString(GetCommitBody(imapMsg)) + "```"; attachments.Append("\""); attachments.Append(commitBody); attachments.Append("\","); attachments.Append("\"mrkdwn_in\": [\"text\"]"); attachments.Append("}]"); return(await slWebApiClient.ChatPostMessageAsync(channelID, sb.ToString(), true, false, attachments.ToString())); }
private async Task <bool> PostCommitToChannels(IMAPMessage imapMsg, HashSet <string> channelIDsForRepository, Dictionary <string, HashSet <string> > commitUidsPostedInChannels) { bool posted = false; foreach (string channelID in channelIDsForRepository) { bool channelFound = false; HashSet <string> commitUidsPostedInChannel = commitUidsPostedInChannels.TryGetValue(channelID, out channelFound); if (channelFound) { if (!commitUidsPostedInChannel.Contains(imapMsg.Uid.ToString())) { SLChatPostMessageResult result = await PostCommit(imapMsg, channelID); if ((!result.ok.HasValue) || (!result.ok.Value)) { posted = false; return(posted); } else { posted = true; } } } } return(posted); }
private string FindLoadRunnerBuildUrl(IMAPMessage message) { string loadRunnerUrl = ""; try { string htmlPart = ""; if (message.BodyParts != null) { foreach (IMAPMessageContent content in message.BodyParts) { if (content.ContentType.StartsWith("text/html")) { htmlPart = content.TextData; HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(htmlPart); foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//td[@style]")) { string innerText = node.InnerHtml; if (innerText.Equals("LoadRunner Setup")) { loadRunnerUrl = node.NextSibling.ChildNodes[0].Attributes["href"].Value; return(loadRunnerUrl); } } } } } } catch (Exception ex) { } return(loadRunnerUrl); }
public void RemoveMessages(IMAPFolder folder, string subjectNotContainingSting) { if (folder == null || folder.Messages == null || folder.Messages.Count <= 0) { return; } if (folder.SubFolders != null && folder.SubFolders.Count > 0) { IMAPFolder[] folders = folder.SubFolders.ToArray(); for (int i = 0; i < folders.Length; i++) { this.RemoveMessages(folders[i], subjectNotContainingSting); } } IMAPMessage[] messages = folder.Messages.ToArray(); for (int i = 0; i < messages.Length; i++) { IMAPMessage message = messages[i]; if (message == null) { continue; } if (subjectNotContainingSting != null) { if (message.Subject == null || !message.Subject.Contains(subjectNotContainingSting)) { try { bool result = folder.Messages.Remove(message); if (result) { continue; } } catch (Exception ex) { ex.ToOutput(); } } } } return; }
private async Task <SLChatPostMessageResult> PostBuild(IMAPMessage message, string groupID) { StringBuilder sb = new StringBuilder(""); sb.Append(cBuildStartLine); sb.Append(" "); sb.Append(message.Uid); sb.Append(" "); sb.Append(message.Subject); sb.AppendLine(); sb.Append(FindLoadRunnerBuildUrl(message)); sb.Append("```"); return(await slWebApiClient.ChatPostMessageAsync(groupID, sb.ToString(), true, true)); }
private async Task <SLChatPostMessageResult> PostCommitComment(IMAPMessage imapMsg, string channelID) { StringBuilder sb = new StringBuilder(""); sb.Append(cCommitStartLine); //sb.Append(imapMsg.Uid); //sb.Append(cCommitFieldsSeparator); sb.Append(cCommitFromName); sb.Append(imapMsg.From[0]); sb.Append(cCommitFieldsSeparator); sb.Append(cCommitSubjectName); sb.Append(imapMsg.Subject); sb.Append(cCommitEndLIne); return(await slWebApiClient.ChatPostMessageAsync(channelID, sb.ToString(), true, false)); }
private string GetCommitBody(IMAPMessage message) { try { if (message.BodyParts != null) { foreach (IMAPMessageContent content in message.BodyParts) { if (content.ContentType.StartsWith("text/plain")) { return(content.TextData); } } } } catch (Exception ex) { } return(""); }
private string GetCommitBody(IMAPMessage message) { try { if (message.BodyParts != null) { foreach (IMAPMessageContent content in message.BodyParts) { if (content.ContentType.StartsWith("text/plain")) { int limit = 3000; int maxLength = content.TextData.Length > limit ? limit : content.TextData.Length; return(content.TextData.Substring(0, maxLength)); } } } } catch (Exception ex) { } return(""); }
private async Task <SLFileUploadResult> PostCommitBody(IMAPMessage imapMsg, string channelID) { string commitBody = GetCommitBody(imapMsg); return(await slWebApiClient.UploadFile(commitBody, "txt", cFileNamePrefix + imapMsg.Uid, channelID)); }
static void Main(string[] args) { //IMAPConfig config = new IMAPConfig("<host>", "<username>", "<password>", false, true, ""); //config.SaveConfig("settings.cfg"); IMAPConfig config = new IMAPConfig(@"c:\test1.cfg"); config.CacheFile = ""; IMAPClient client = null; try { client = new IMAPClient(config, null, 5); } catch (IMAPException e) { Console.WriteLine(e.Message); return; } //IMAPFolder drafts = client.Folders["Drafts"]; //IMAPMessage newMessage = new IMAPMessage(); //newMessage.From.Add(new IMAPMailAddress("Jason Miesionczek", "*****@*****.**")); //newMessage.To.Add(new IMAPMailAddress("Jason Miesionczek", "*****@*****.**")); //newMessage.Date = DateTime.Now; //newMessage.Subject = "this is a new message"; //drafts.AppendMessage(newMessage, "this is the content of the new message"); //IMAPFolder f = client.Folders["INBOX"]; //Console.WriteLine(f.Messages.Count); //IMAPMessage msg = f.GetMessageByID(21967); //Console.WriteLine(msg.TextData.Data); //foreach (IMAPFileAttachment attachment in msg.Attachments) //{ // attachment.SaveFile("C:\\"); //} //Console.ReadLine(); IMAPFolder f = client.Folders["INBOX"]; int[] msgCount = null; while (msgCount.Length == 0) { msgCount = f.CheckForNewMessages(); Thread.Sleep(1000); } foreach (int id in msgCount) { IMAPMessage msg = f.GetMessageByID(id); // do some logic here msg.MarkAsRead(); } //IMAPFolder f = client.Folders["Deleted Items"]; //IMAPMessage m = f.GetMessageByID(707); //IMAPFolder d = client.Folders["Deleted Items"]; //IMAPMessage m = d.Messages[0]; //IMAPMessage m = f.GetMessageByID(375); //IMAPMessage m = f.Messages[0]; //m.RefreshData(true, true); //client._imap.ProcessMessageHeader(m, 0); // 2893 //client._imap.ProcessBodyStructure(m); //client._imap.ProcessMessageHeader(m, 0); //client._imap.ProcessBodyStructure(m); //client._imap.ProcessBodyParts(m); //client._imap.ProcessAttachments(m); //IMAPSearchQuery query = new IMAPSearchQuery(); //query.Range = new DateRange(DateTime.Now.AddDays(-6), DateTime.Now); //IMAPSearchResult sResult = f.Search(query); //IMAPSearchResult sResult = f.Search(IMAPSearchQuery.QuickSearchDateRange(DateTime.Now.AddDays(-6), DateTime.Now)); //IMAPSearchResult sResult = f.Search(IMAPSearchQuery.QuickSearchFrom("Christine Fade", "*****@*****.**")); //IMAPSearchResult sResult = f.Search(IMAPSearchQuery.QuickSearchNew()); //IMAPFolder test = f.SubFolders["Test"]; //IMAPFolder del = client.Folders["Deleted Items"]; //f.CopyMessageToFolder(f.Messages[0], test); //test.DeleteMessage(test.Messages[0]); //f.MoveMessageToFolder(f.Messages[0], test); //test.EmptyFolder(); //Console.WriteLine("{0} - {1}", sResult.Query.Range.StartDate, sResult.Query.Range.EndDate); //foreach (IMAPMessage msg in sResult.Messages) //{ // msg.RefreshData(true, true, false); // Console.WriteLine("{0}: {1}", msg.Date, msg.Subject); // Console.WriteLine(msg.TextData.Data); //} //m.Attachments[1].SaveFile("C:\\"); Console.ReadLine(); foreach (IMAPMessage msg in client.Folders["INBOX"].Messages) { if (msg.BodyParts.Count == 0) { Console.WriteLine(msg.Uid); } } client.Logoff(); }