- PVSM.RU - https://www.pvsm.ru -
Мы все любим велосипеды.
Даешь больше велосипедов, хороших и разных, с квадратными и треугольными колесами!!!
Я долго пользуюсь почтой gmail. Когда я еще сидел на опере, я пользовался встроенным почтовым клиентом и все было хорошо. Потом я пересел на хром, стал использовать веб-версию почты, и о сообщениях узнавал с задержкой — ну не нравились мне клиенты, которые нужно ставить, что-то в них настраивать…
В общем, со временем вручную переходить на почту надоело, и я сел творить еще один велосипед. Кому лень читать, ссылка на проект (С#). Dropbox [1].
Остальные могут почитать
С почтой до этого я дел не имел. Собственное, решил спросить у гугла. В результате где-то не помню где нашел dll-ку для работы с imap (лежит в архиве с проектом). Все в ней хорошо, кроме одного — она платная. А бесплатная выдает сообщение раз в 10 минут. Может, кто-то знает, как запретить dll-ке выводить окошко? Напишите в личку или в комментариях — буду рад совету.
Все, что я пока хочу, это всплывающее в трее сообщение с количеством новых писем (если таковые имеются, естественно). Итак, с идеей все ясно, начинаем творить… Но форму я оставил — для авторизации, например, или чего-то еще, что захочу прикрутить. За WinForms не ругать.
Все довольно тривиально, пройдемся по тому, что для меня не было совсем очевидным. То есть, по всему.
Добавим компонент 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(); //таймер для проверки почтового ящика
Ух ты — все работает!
На обработчик события тика таймера добавим такую простыню:
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); // Вот оно - всплывающее сообщение
}
Еще там по двойному клику есть открытие веб версии почты — но это уже мелочи.
В конце выйдет такое вот:
Да, если что — пишите письма я ни в чем не виноват. Ну, мало ли. Ну, и о багах пишите — я ведь только учусь…
Автор: Izobara
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/33130
Ссылки в тексте:
[1] Dropbox: https://www.dropbox.com/s/3mfabqkcgfmdev5/IzoGmailNotify.zip
[2] Источник: http://habrahabr.ru/post/178093/
Нажмите здесь для печати.