-
procedure TForm1.Button2Click(Sender: TObject); var i,n:integer; Msg:TIdMessage; begin if(IdPOP31.Connected)then begin MSG:= TIdMessage.Create(self); i:=Idpop31.CheckMessages;//определяет правильно for n:=1 to i do begin Msg.Clear; //IdPOP31.RetrieveHeader(i,Msg); //ListBox1.Items.Add(Msg.Subject);//считывает правильно IdPOP31.Retrieve(n,Msg);//Задумывается навсегда( Memo1.Text:=Memo1.Text+Msg.Body.Tex t; end; Msg.Free; end; Вопрос:Почему он не может обработать эту строку, если все предыдущие обрабатывает правильно p.s. Использовал любые другие варианты реализации чтения писем этим компанентом, всегда останавливается на той строке(, а мне нужно именно пользуясь инди
-
возможно у тебя там много писем что видеть приход каждого письма ставь после Memo1.Text:=Memo1.Text+Msg.Body.Tex t; application.progressmessages;
-
письма у меня всего 3, и до этой строчки прога всё равно не доходит, говорю же, задумывается на получении письма, первого самого
-
пробуй так procedure TForm1.SpeedButton1Click(Sender: TObject);
var
i:integer;
begin
pop.Connect;
i:=pop.CheckMessages;
memo1.Lines.Add('Messages on server ='+inttostr(i)) ;
application.ProcessMessages;
pop.RetrieveRaw(1,memo1.Lines);
pop.Disconnect;
end; напиши чо получилось
-
зависло на строке POP.RetrieveRaw(1,memo1.Lines);
-
хм..... даже и не знаю чем помочь, может снифером смотреть чего там кто посылает, поможет найти закляк
-
может там у тебя еще что то есть, мож дело не POP`е )))) побробуй создать пустой проект, кинуть мемо и поп3 кнопку и событе которое я описал выше
-
так же зависает на той строке, качаю сниффер, может найдёт чё, сейчас качнул несколько разных, на делфях написанных почтовиков, та же фигня, везде виснет при считывании текста почты, думаю вирус(, спасибо за помошь)
-
Ребята проблема актуальная. Уже месяц бьюсь с багами INDY , но проблема у каждой версии своя. В стандартной версии с Delphi 6.0, так же при получении почты и на той же строчке программа периодически выдавала ошибку. Читав форумы принял решение замены версии на Indy 9.0.18 Теперь тот же проект ошибки не выдает, но перестал определять части письма. Это сделало невозможным извлечь вложение поскольку IdMessage.MessageParts.Count = 0
-
Удалено модератором Примечание: спам
-
> периодически выдавал ошибку
> При попытке сделать «id = 0» или «id = 1» выдает ошибку.
партизайнен?
-
> Уже месяц бьюсь с багами INDY , но проблема у каждой версии > своя.
Не ты один, но другие уже давно сделали вывод - ну его нафиг эту заливную рыбу.
-
Моя задача вытащить Attachment с письма используя Delphi 6.0 Indy 9.0.18 Параметры письма: MIME-Version: 1.0 Content-Type: application/vnd.ms-excel; name="11.04.11.XLS" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="11.04.11.XLS" X-Mailer: Microsoft Outlook Express 6.00.3790.4657 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.4721 Общеизвестный метод в данном случае не работает: for i:=0 to MessageBase.MessageParts.Count do begin if MessageBase.MessageParts.Items[i].ClassType = TIdAttachment then begin Attach := MessageBase.MessageParts.Items[i] as TIdAttachment; Attach.SaveToFile(Attach.FileName); end; end;
Показывает MessageBase.MessageParts.Count = 0 , следовательно перебор частей письма не имеет смысла хотя вложение фактически присутствует в письме. Сохранить в файл *.EML удается без проблем. Помогите пожалуйста разобраться как вытащить атачмент из письма или *.eml файла.
-
> demin_as (26.04.2011 08:22:12) [12]
Я бы тоже задумался, чего автор ко мне пристал, с циклом на единицу больше. И видимо проверку диапазонов не включил.
-
> Я бы тоже задумался, чего автор ко мне пристал, с циклом на единицу больше. На счет цикла тут все нормально. Проблема только в том, что MessageBase.MessageParts.Count показывает "0"
> И видимо проверку диапазонов не включил. Диапазонов чего...?
|