Сборщик почты (делаем простые вещи сложно)
21 мин
В качестве предисловия
Наверное, многие из вас в своей практике сталкивались с задачей сбора почты с ряда ящиков. Зачем это может быть нужно? Наверное, потому что это универсальный механизм обмена данными между системами. Множество библиотек под любые языки, реализующих SMTP, POP3, IMAP, готовые решения по реализации стэка сообщений (как я сложно назвал почтовый ящик...) и т.д.
Неудивительно, что многие интеграционные задачи реализуются именно через почту. Тут в дело вступает некий сервис, который умеет эту почту быстро забирать, категоризировать и выполнять необходимые действия.
Кому достаточно приведенного ниже кода — дальше могут не читать:
foreach (var mailbox in mailboxes)
using (var client = new Pop3Client())
{
client.Connect(Hostname, Port, false);
client.Authenticate(User, Password);
var count = client.GetMessageCount();
for (var i = 0; i < count; i++)
{
Mail = client.GetMessage(i + 1);
var cat = SortMail(Mail);
DoSomething(Mail, cat);
}
}






Мы организуем конференцию для веб-разработчиков и решили обзвонить Челябинские веб-студии. Нужно было как-то сразу после звонка отправить красивое письмо. Также важно получать отчеты о доставке писем и “кликабельности” ссылок (первое на случай опечатки, а второе для оценки затеи). Да, и это все нужно “еще вчера”, а программисты не доступны.
