public async Task Dowork(Action <bool> callback) { await Client.Inbox.OpenAsync(FolderAccess.ReadWrite); var query = SearchQuery.NotSeen.And(SearchQuery.SubjectContains("Trainer Club Activation")); var uids = await Client.Inbox.SearchAsync(query); TotalUids = uids.Count; callback(false); foreach (var uid in uids) { try { var message = await Client.Inbox.GetMessageAsync(uid); if (message.HtmlBody == null) { continue; } var matches = _reg.Matches(message.HtmlBody); if (matches.Count == 0) { continue; } var url = matches[0].Value; var clickedUrls = url; var parsedUrlEventArgs = new ParsedUrlEventArgs(uid, clickedUrls, message.From.ToString(), message.To.ToString()); OnLinksParsed(this, parsedUrlEventArgs); await Task.Delay(600); } catch (Exception ex) { //if (ex.Message.Equals("The ImapClient is not authenticated.")) // await Client.AuthenticateAsync(EmailUrlParserConfiguration.GetCredential()); Debug.WriteLine(ex.Message); } callback(false); } callback(true); await Client.Inbox.CloseAsync(false); }
protected virtual void OnLinksParsed(object arg1, ParsedUrlEventArgs arg2) { ParsedLinkEvent?.Invoke(arg1, arg2); }
public async Task Dowork(Action <bool> callback) { await Client.Inbox.OpenAsync(FolderAccess.ReadWrite); var query = SearchQuery.NotSeen;//.And(SearchQuery.FromContains("*****@*****.**")); //.And(SearchQuery.SubjectContains("Pokémon Trainer Club Activation").Or(SearchQuery.SubjectContains("Your account needs to be re-activated"))); var uids = await Client.Inbox.SearchAsync(query); TotalUids = uids.Count; callback(false); foreach (var uid in uids) { try { await Client.Inbox.GetMessageAsync(uid).ContinueWith(msg => { if (msg.IsFaulted || msg.IsCanceled) { return; } if (msg.Result.HtmlBody == null) { return; } var matches = _reg.Matches(msg.Result.HtmlBody); if (matches.Count == 0) { return; } var url = matches[0].Value; var clickedUrls = url; var parsedUrlEventArgs = new ParsedUrlEventArgs(uid, clickedUrls, msg.Result.From.ToString(), msg.Result.To.ToString()); OnLinksParsed(this, parsedUrlEventArgs); }); await Task.Delay(500); } catch (Exception ex) { if (!Client.IsConnected) { await Client.ConnectAsync(EmailUrlParserConfiguration.GetUri()) .ConfigureAwait(false); } if (!Client.IsAuthenticated) { await Client.AuthenticateAsync(EmailUrlParserConfiguration.GetCredential()); } if (!Client.Inbox.IsOpen) { await Client.Inbox.OpenAsync(FolderAccess.ReadWrite); } } callback(false); } callback(true); await Client.Inbox.CloseAsync(true); }