Example #1
0
        private void TimerElapsed(object sender)
        {
            try
            {
                for (var i = emailClient.GetMessageCount() - 1; i >= 0; i--)
                {
                    var msg = emailClient.GetMessage(i);
                    var to  = msg.To.First().Address;

                    var tokens = to.Split('+');

                    var  environmentId = tokens.FirstOrDefault();
                    Guid temp;

                    if (!Guid.TryParse(environmentId, out temp))
                    {
                        environmentId = null;
                    }

                    var service = string.Empty;

                    if (tokens.Length > 1)
                    {
                        service = tokens[1];
                    }

                    var parameters = string.Empty;
                    if (tokens.Length > 2)
                    {
                        parameters = tokens[2].Split('@').First();
                    }

                    Bus.Publish <EmailReceived>(email =>
                    {
                        if (!string.IsNullOrEmpty(environmentId))
                        {
                            email.SetHeader("EnvironmentId", environmentId);
                        }

                        email.To         = to;
                        email.Body       = msg.Body;
                        email.From       = msg.From.Address;
                        email.Subject    = msg.Subject;
                        email.Service    = service;
                        email.Parameters = parameters;
                        email.TimeSent   = msg.Date;
                    });

                    emailClient.DeleteMessage(msg);
                }
            }
            catch (Exception ex)
            {
                logger.Error("There was a problem fetching emails", ex);
            }
            finally
            {
                timer.Change(checkInterval * 1000, int.MaxValue);
            }
        }
Example #2
0
        //Delete inbox mail by client
        private void DeleteInboxMail(object o)
        {
            var mail = o as MailMsgBase;

            if (mail != null && !string.IsNullOrEmpty(mail.UID))
            {
                Messenger.Default.Send(new DisplayMessage("Are you sure?", "The mail will delete and not exist.Ensure delete this mail.")
                {
                    OnOk = async() =>
                    {
                        System.Diagnostics.Debug.WriteLine("On ok click.");
                        IsRequesting = true;
                        await Task.Run(() =>
                        {
                            try
                            {
                                System.Diagnostics.Debug.WriteLine("Delete mail action invoked.");
                                if (EnsureLoginFetchMessage() && globalClient.DeleteMessage(mail.UID))
                                {
                                    Messenger.Default.Send(new DisplayMessage("Delete Successful!", DisplayType.Toast));
                                    Application.Current.Dispatcher.Invoke(() =>
                                    {
                                        InboxList.Remove(mail);
                                    });
                                }
                            }
                            catch (Exception e)
                            {
                                Messenger.Default.Send(new DisplayMessage("Delete Fail!", e.Message));
                            }
                        });
                        IsRequesting = false;
                    }
                });
            }
        }