Esempio n. 1
0
        public void login()
        {
            result.credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                new ClientSecrets
            {
                ClientId     = "316924129116-efm2iopj3strkrpbjkf7oeqmptn8ph27.apps.googleusercontent.com",
                ClientSecret = "MAxnno9YGxGTdtNiEqItt8-n"
            },
                new[] { "https://mail.google.com/ email" },
                "Tiramisu",
                CancellationToken.None,
                new FileDataStore("Analytics.Auth.Store")).Result;

            if (result.credential != null)
            {
                result.service = new PlusService(new BaseClientService.Initializer()
                {
                    HttpClientInitializer = result.credential,
                    ApplicationName       = "Google mail",
                });

                Google.Apis.Plus.v1.Data.Person            me             = result.service.People.Get("me").Execute();
                Google.Apis.Plus.v1.Data.Person.EmailsData myAccountEmail = me.Emails.Where(a => a.Type == "account").FirstOrDefault();
                imapClient = new MailKit.Net.Imap.ImapClient();
                var credentials = new NetworkCredential(myAccountEmail.Value, result.credential.Token.AccessToken);

                imapClient.Connect("imap.gmail.com", 993, true, CancellationToken.None);
                imapClient.Authenticate(credentials, CancellationToken.None);
            }
        }
        public static GAAutentication Autenticate(string _client_id, string _client_secret)
        {
            GAAutentication result = new GAAutentication();

            try
            {
                UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(new ClientSecrets {
                    ClientId = _client_id, ClientSecret = _client_secret
                },
                                                                                        new[] { "https://mail.google.com/ email" },
                                                                                        "Lindau",
                                                                                        CancellationToken.None,
                                                                                        new FileDataStore("Analytics.Auth.Store")).Result;
            }
            catch (Exception ex)
            {
                int i = 1;
            }

            if (result.credential != null)
            {
                result.service = new PlusService(new BaseClientService.Initializer()
                {
                    HttpClientInitializer = result.credential,
                    ApplicationName       = "Google mail",
                });


                Google.Apis.Plus.v1.Data.Person me = result.service.People.Get("me").Execute();

                Google.Apis.Plus.v1.Data.Person.EmailsData myAccountEmail = me.Emails.Where(a => a.Type == "account").FirstOrDefault();

                // Connect to the IMAP server. The 'true' parameter specifies to use SSL
                // which is important (for Gmail at least)
                ImapClient ic = new ImapClient("imap.gmail.com", myAccountEmail.Value, result.credential.Token.AccessToken,
                                               ImapClient.AuthMethods.SaslOAuth, 993, true);
                // Select a mailbox. Case-insensitive
                ic.SelectMailbox("INBOX");
                Console.WriteLine(ic.GetMessageCount());
                // Get the first *11* messages. 0 is the first message;
                // and it also includes the 10th message, which is really the eleventh ;)
                // MailMessage represents, well, a message in your mailbox
                MailMessage[] mm = ic.GetMessages(0, 10);
                foreach (MailMessage m in mm)
                {
                    Console.WriteLine(m.Subject + " " + m.Date.ToString());
                }
                // Probably wiser to use a using statement
                ic.Dispose();
            }
            return(result);
        }
Esempio n. 3
0
        public List <Expenses> GetMails(string _client_id, string _client_secret)
        {
            CustomMailService result      = new CustomMailService();
            List <Expenses>   emailModels = new List <Expenses>();
            //If you want to test new gmail account,
            //Go to the browser, log off, log in with the new account,
            //and then change this 'tmpUser'
            var tmpUser = "******";

            try
            {
                result.credential = GoogleWebAuthorizationBroker.AuthorizeAsync(new ClientSecrets {
                    ClientId = _client_id, ClientSecret = _client_secret
                },
                                                                                new[] { "https://mail.google.com/ email" },
                                                                                tmpUser,
                                                                                CancellationToken.None,
                                                                                new FileDataStore("Analytics.Auth.Store")).Result;
            }
            catch (Exception ex)
            {
            }

            if (result.credential != null)
            {
                result.service = new PlusService(new BaseClientService.Initializer()
                {
                    HttpClientInitializer = result.credential,
                    ApplicationName       = "Google mail",
                });


                Google.Apis.Plus.v1.Data.Person me = result.service.People.Get("me").Execute();

                Google.Apis.Plus.v1.Data.Person.EmailsData myAccountEmail = me.Emails.Where(a => a.Type == "account").FirstOrDefault();

                // Connect to the IMAP server. The 'true' parameter specifies to use SSL
                // which is important (for Gmail at least)
                ImapClient imapClient = new ImapClient("imap.gmail.com", myAccountEmail.Value, result.credential.Token.AccessToken,
                                                       ImapClient.AuthMethods.SaslOAuth, 993, true);

                var mailBox = imapClient.SelectMailbox("FNB");

                Console.WriteLine("ListMailboxes");

                Console.WriteLine(mailBox.Name);
                var original = Console.ForegroundColor;

                var examine = imapClient.Examine(mailBox.Name);
                if (examine != null)
                {
                    Console.WriteLine(" - Count: " + imapClient.GetMessageCount());

                    //Get One Email per folder

                    MailMessage[] mm = imapClient.GetMessages(0, imapClient.GetMessageCount());
                    Console.ForegroundColor = ConsoleColor.Blue;
                    var counter = 0;
                    foreach (MailMessage m in mm)
                    {
                        if (m.Date > DateTime.Now.AddDays(-30))
                        {
                            if (m.Subject.Contains("reserved for purchase") || m.Subject.Contains("paid from cheq"))
                            {
                                var substring = m.Subject.Substring(7, 10);
                                var number    = Regex.Split(substring, @"[^0-9\.]+")[1];
                                var amount    = Convert.ToDouble(number, CultureInfo.InvariantCulture);
                                var email     = new Expenses()
                                {
                                    PaymentType = PaymentType.Bill, Name = m.Subject, Amount = amount, Id = m.MessageID, PaymentDate = m.Date
                                };
                                if (m.Subject.Contains("paid from cheq"))
                                {
                                    email.PaymentType = PaymentType.Buy;
                                }
                                emailModels.Add(email);
                                counter++;
                            }
                        }
                    }
                }
                else
                {
                }

                imapClient.Dispose();
            }
            return(emailModels);
        }
        public static GAAutentication Autenticate(string _client_id, string _client_secret)
        {
            GAAutentication result = new GAAutentication();

            //If you want to test new gmail account,
            //Go to the browser, log off, log in with the new account,
            //and then change this 'tmpUser'
            var tmpUser = "******";

            try
            {
                result.credential = GoogleWebAuthorizationBroker.AuthorizeAsync(new ClientSecrets {
                    ClientId = _client_id, ClientSecret = _client_secret
                },
                                                                                new[] { "https://mail.google.com/ email" },
                                                                                tmpUser,
                                                                                CancellationToken.None,
                                                                                new FileDataStore("Analytics.Auth.Store")).Result;
            }
            catch (Exception ex)
            {
            }

            if (result.credential != null)
            {
                result.service = new PlusService(new BaseClientService.Initializer()
                {
                    HttpClientInitializer = result.credential,
                    ApplicationName       = "Google mail",
                });


                Google.Apis.Plus.v1.Data.Person me = result.service.People.Get("me").Execute();

                Google.Apis.Plus.v1.Data.Person.EmailsData myAccountEmail = me.Emails.Where(a => a.Type == "account").FirstOrDefault();

                // Connect to the IMAP server. The 'true' parameter specifies to use SSL
                // which is important (for Gmail at least)
                ImapClient ic = new ImapClient("imap.gmail.com", myAccountEmail.Value, result.credential.Token.AccessToken,
                                               ImapClient.AuthMethods.SaslOAuth, 993, true);

                var listOfMainboxes = ic.ListMailboxes(string.Empty, "*");
                Console.WriteLine("ListMailboxes");
                foreach (Mailbox mb in listOfMainboxes)
                {
                    Console.WriteLine(mb.Name);
                    var original = Console.ForegroundColor;

                    var examine = ic.Examine(mb.Name);
                    if (examine != null)
                    {
                        //Count?
                        ic.SelectMailbox(mb.Name);
                        Console.WriteLine(" - Count: " + ic.GetMessageCount());

                        //Get One Email per folder
                        MailMessage[] mm = ic.GetMessages(0, 0);
                        Console.ForegroundColor = ConsoleColor.Blue;
                        foreach (MailMessage m in mm)
                        {
                            Console.WriteLine(" - " + m.Subject + " " + m.Date);
                        }
                        Console.ForegroundColor = original;
                    }
                    else
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.Error.WriteLine("* Folder doesn't exists: " + mb.Name);
                        Console.ForegroundColor = original;
                    }
                }

                /*
                 * // Select a mailbox. Case-insensitive
                 * ic.SelectMailbox("INBOX");
                 *
                 * Console.WriteLine(ic.GetMessageCount());
                 * // Get the first *11* messages. 0 is the first message;
                 * // and it also includes the 10th message, which is really the eleventh ;)
                 * // MailMessage represents, well, a message in your mailbox
                 * MailMessage[] mm = ic.GetMessages(0, 10);
                 * foreach (MailMessage m in mm)
                 * {
                 *  Console.WriteLine(m.Subject + " " + m.Date.ToString());
                 * }
                 * // Probably wiser to use a using statement
                 */
                ic.Dispose();
            }
            return(result);
        }