Мы все любим велосипеды.
Даешь больше велосипедов, хороших и разных, с квадратными и треугольными колесами!!!
Я долго пользуюсь почтой 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); // Вот оно - всплывающее сообщение
}
Еще там по двойному клику есть открытие веб версии почты — но это уже мелочи.
В конце выйдет такое вот:
Да, если что — пишите письма я ни в чем не виноват. Ну, мало ли. Ну, и о багах пишите — я ведь только учусь…
Автор: Izobara