В качестве предисловия
Наверное, многие из вас в своей практике сталкивались с задачей сбора почты с ряда ящиков. Зачем это может быть нужно? Наверное, потому что это универсальный механизм обмена данными между системами. Множество библиотек под любые языки, реализующих 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);
}
}