Здравствуйте, МихаилС, Вы писали:
МС>Всем привет!
МС>Кто-нибудь обладает компонентом/классом на С++/C# для работы с POP3, который позволял бы работать
МС>с аттачментами и которым "не жалко поделиться"?
Можешь посмотреть на это
NMail, с POP3 он работает, да и парсит attachments.
Gl,
dES
Здравствуйте, dES0, Вы писали:
ES>Можешь посмотреть на это NMail,
ES>с POP3 он работает, да и парсит attachments.
Спасибо, огромное dES0, классная библитека! Именно то, что мне нужно.
Сообщение принимает, аттачменты "отдает"...
Правда при приеме сообщения с сервера возникало исключение с сообщением.
Snippet with last five error octals: {
aXJ1}
!!! ERROR's occured: 'Invalid tail.'
Видимо сообщение принималось не до конца.
Ситуация исправилась с добавлением задержек (дурацкое, но "быстрое" решение... пойдет для
первоначального тестирования) в метод Pop3.UnsafeReceive
StringBuilder UnsafeReceive()
{
StringBuilder tmp = new StringBuilder();
Encoding cenc = Encoding.ASCII;
do
{
Byte [] buf = new Byte[MaxReceiveSize];
// --- HERE ---
Thread.Sleep( 2000 );
// ============
int recv = _socket.Receive(buf, SocketFlags.None);
if (recv == 0)
{
if (tmp.Length > STAT_ERR.Length)
{
break;
}
CloseSocket();
throw new DeadConnectException("Zero has been returned from Receive;"
"possibly server close the connection");
}
tmp.Append(cenc.GetChars(buf, 0, recv));
// --- HERE ---
Thread.Sleep( 2000 );
// ============
} while(_socket.Poll(PollTimeout, SelectMode.SelectRead));
Сейчас попробую поискать "более красивое" решение проблемы.
Здравствуйте, МихаилС, Вы писали:
Да, это известный мне баг, но к сожалению, я так и не нашёл решения. Thread.Sleep, не всегда помогает,
попробуй увеличить PollTimeout. Я одно время игрался с .Poll'ом и обнаружил,
что он не всегда корректно работает.
Вообще в скором будущем я всё же сделаю на Stream'ах, так как это освобождает от Exception
Snippet with last five error octals: {aXJ1}
!!! ERROR's occured: 'Invalid tail.'
Если найдёшь ещё какие-то баги, я был бы очень благодарен если бы ты отослал симптомы мне.
МС>Спасибо, огромное dES0, классная библитека! Именно то, что мне нужно.
МС>Сообщение принимает, аттачменты "отдает"...
МС>Правда при приеме сообщения с сервера возникало исключение с сообщением.
МС>МС>Snippet with last five error octals: {
МС>aXJ1}
МС>!!! ERROR's occured: 'Invalid tail.'
МС>Видимо сообщение принималось не до конца.
МС>Ситуация исправилась с добавлением задержек (дурацкое, но "быстрое" решение... пойдет для
МС>первоначального тестирования) в метод Pop3.UnsafeReceive
МС>МС>StringBuilder UnsafeReceive()
МС>{
МС> StringBuilder tmp = new StringBuilder();
МС> Encoding cenc = Encoding.ASCII;
МС> do
МС> {
МС> Byte [] buf = new Byte[MaxReceiveSize];
МС> // --- HERE ---
МС> Thread.Sleep( 2000 );
МС> // ============
МС> int recv = _socket.Receive(buf, SocketFlags.None);
МС> if (recv == 0)
МС> {
МС> if (tmp.Length > STAT_ERR.Length)
МС> {
МС> break;
МС> }
МС> CloseSocket();
МС> throw new DeadConnectException("Zero has been returned from Receive;"
МС> "possibly server close the connection");
МС> }
МС> tmp.Append(cenc.GetChars(buf, 0, recv));
МС> // --- HERE ---
МС> Thread.Sleep( 2000 );
МС> // ============
МС> } while(_socket.Poll(PollTimeout, SelectMode.SelectRead));
МС>
МС>Сейчас попробую поискать "более красивое" решение проблемы.
Здравствуйте, МихаилС, Вы писали:
МС>Спасибо еще раз за библиотеку!
Пожалуйста, пользуйся на здоровье
Gl,
dES