Создаем велосипеды для Gmail вместе

в 11:06, , рубрики: .net, gmail, велосипеды, Песочница, Программирование, метки: , , ,

Мы все любим велосипеды.

Даешь больше велосипедов, хороших и разных, с квадратными и треугольными колесами!!!

Я долго пользуюсь почтой gmail. Когда я еще сидел на опере, я пользовался встроенным почтовым клиентом и все было хорошо. Потом я пересел на хром, стал использовать веб-версию почты, и о сообщениях узнавал с задержкой — ну не нравились мне клиенты, которые нужно ставить, что-то в них настраивать…

Создаем велосипеды для Gmail вместе
В общем, со временем вручную переходить на почту надоело, и я сел творить еще один велосипед. Кому лень читать, ссылка на проект (С#). Dropbox.
Остальные могут почитать

Подготовка

С почтой до этого я дел не имел. Собственное, решил спросить у гугла. В результате где-то не помню где нашел dll-ку для работы с imap (лежит в архиве с проектом). Все в ней хорошо, кроме одного — она платная. А бесплатная выдает сообщение раз в 10 минут. Может, кто-то знает, как запретить dll-ке выводить окошко? Напишите в личку или в комментариях — буду рад совету.
Все, что я пока хочу, это всплывающее в трее сообщение с количеством новых писем (если таковые имеются, естественно). Итак, с идеей все ясно, начинаем творить… Но форму я оставил — для авторизации, например, или чего-то еще, что захочу прикрутить. За WinForms не ругать.

Код в студию!

Все довольно тривиально, пройдемся по тому, что для меня не было совсем очевидным. То есть, по всему.

1. Сворачиваем в трей

Добавим компонент NotifyIcon. Назвем его Tray.
На событие Form_Resize навешиваем следующий код:

            if (this.WindowState == FormWindowState.Minimized)
            {
                this.ShowInTaskbar = false;
                this.Visible = false;
            }

И на Form_Shown соответственно:

            this.WindowState = FormWindowState.Minimized;
            timer.Enabled = true;
            timer.Start(); //таймер для проверки почтового ящика

Ух ты — все работает!

2. Проверка почты

На обработчик события тика таймера добавим такую простыню:

            Imap imap = new Imap(); // Класс с той самой длл-ки
            imap.Connect("imap.gmail.com", 993, true);
            imap.Login("логин", "пароль"); //логин-пароль я вставил в код - для себя делаю, а авторизацию по всем правилам сделаю, вдруг захочу раздавать друзьям:)
            imap.SelectInbox();
            List<long> unseenList = imap.Search(Flag.Unseen);
            if (unseenList.Count != 0)
            {
                Tray.ShowBalloonTip(1000, "Gmail", Convert.ToString(unseenList.Count), ToolTipIcon.Info); // Вот оно - всплывающее сообщение
            }

Еще там по двойному клику есть открытие веб версии почты — но это уже мелочи.
В конце выйдет такое вот:
Создаем велосипеды для Gmail вместе
Да, если что — пишите письма я ни в чем не виноват. Ну, мало ли. Ну, и о багах пишите — я ведь только учусь…

Автор: Izobara

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js