Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 protected virtual void OnLinksParsed(object arg1, ParsedUrlEventArgs arg2)
 {
     ParsedLinkEvent?.Invoke(arg1, arg2);
 }
Ejemplo n.º 3
0
        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);
        }