C#. Работа с почтой через OpenPop
Недавно была задача обработки писем по pop3 протоколу. Перекопал кучу компонент, но наконец нашёл подходящую во всех отношениях библиотеку OpenPop. У одних были проблемы с кодировками, другие «кушали» много ресурсов, третьи ещё чем-то не подошли.
Качать тут: http://hpop.sourceforge.net/
Привожу код, который, надеюсь, кому-то когда-то поможет
using (Pop3Client client = new Pop3Client())
{
// Connect to the server
client.Connect(«host», port, false);
// Authenticate ourselves towards the server
client.Authenticate(«login», «password»);
List<string> msgs = client.GetMessageUids(); //получаем список айдишников писем в почте
for (int i = 1; i <= msgs.Count; i++) //организация цикла по сообщениям в почте
{
Message msg = client.GetMessage(i); // получаем сообщение
List<MessagePart> mpart = msg.FindAllAttachments(); // находим ВСЕ приаттаченные файлы
string body = «»;
// ищем первую плейнтекст версию в сообщении
MessagePart mpPlain = msg.FindFirstPlainTextVersion();
if (mpPlain != null)
{
Encoding enc = mpPlain.BodyEncoding;
body = enc.GetString(mpPlain.Body); // получаем текст сообщения
}
if (mpart.Count > 0) // если есть аттачменты то …
{
foreach (MessagePart attach in mpart)
{
// read data from attachment . допустим у меня в аттачменте текст в ЮТФ8. получу его содержание
string ticket = Encoding.UTF8.GetString(attach.Body);
// что-то делаю с ним
}
Console.WriteLine(«Mail with subject » + msg.Headers.Subject + « is ready!»);
}
}
}
Успехов !