Data, godzina, rozmiar emaila

Odpowiedz Nowy wątek
2004-09-24 10:23

Rejestracja: 15 lat temu

Ostatnio: 12 lat temu

0

Witam!
Odbieram sobie maile z serwera biorąc nagłówki do listboxa, odczytując je w Webbrowserze, a nadawcę podaję w Edicie. Używam komponentów idpop3 i idmessage. I teraz pytanie: Jak mogę w Editach przedstawić jeszcze datę, godzinę przysłania emaila oraz jego rozmiar?
Dziękuję za odpowiedź i pozdrufki :) [browar]


"Szukałem, ale nie znalazłem..."

Pozostało 580 znaków

2004-09-24 11:14
Moderator

Rejestracja: 18 lat temu

Ostatnio: 4 godziny temu

0

TIdMessage.Date

Pozostało 580 znaków

2004-09-24 11:26

Rejestracja: 15 lat temu

Ostatnio: 12 lat temu

0

TIdMessage.Date
Nie ma takiego czegoś...bo bym już tak dawno zrobił :)


"Szukałem, ale nie znalazłem..."

Pozostało 580 znaków

Inter
2004-09-24 12:26
Inter
0

Cześć

Tu masz pobranie informacji z nagłówka wiadomości:

 ileWiad:= IdPOP3.CheckMessages; //ile wiadomości w skrzynce
 rozmiar:= IdPOP3.RetrieveMailBoxSize div 1024; //rozmiar wszystkich wiadomości
 if ileWiad > 0 then
 begin
   ListView1.Clear;
   for x:= 1 to ileWiad do
   begin
     IdPOP3.RetrieveHeader(x, IdMessage);
     lista:= ListView1.Items.Add;
     lista.Caption:= IdMessage.Subject;                        //temat
     lista.SubItems.Add(IdMessage.From.Text);                  // nadawca
     lista.SubItems.Add(DateToStr(IdMessage.Date)+'r.');       //data nadania
     lista.SubItems.Add(IntToStr(IdPOP3.RetrieveMsgSize(x)));  // rozmiar
   end;
 end;

A tu po odebraniu wiadomości możesz uzyskać dalsze informacje,

 //zmienna "poz" = która wiadomość do pobrania
 IdPOP3.Retrieve(poz + 1, IdMessage); //pobranie wiadomości
 //dodatkowe informacje o wiadomości wyświetlane w labelach
 LabelFrom.Caption:= IdMessage.From.Text;
 LabelRecipients.Caption:= IdMessage.Recipients.EmailAddresses;
 LabelCc.Caption:= IdMessage.CCList.EMailAddresses;
 LabelSubject.Caption:= IdMessage.Subject;
 LabelDate.Caption:= FormatDateTime(?dd mmm yyyy hh:mm:ss?,IdMessage.Date);
 LabelReceipt.Caption:= IdMessage.ReceiptRecipient.Text;
 LabelOrganization.Caption:= IdMessage.Organization;
 LabelPriority.Caption:= IntToStr(Ord(IdMessage.Priority) + 1);

A mój nierozwiązany problem to:

<url> http://4programmers.net/Forum/viewtopic.php?id=58502 </url>

Może ktoś się pokusi by odpowiedzieć ?

Pozostało 580 znaków

2004-09-24 12:32

Rejestracja: 15 lat temu

Ostatnio: 12 lat temu

0

No i o to mi chodziło, dzięki Inter [browar] Jeszcze tylko załacznik musze się nauczyć ściągać z serwera :)


"Szukałem, ale nie znalazłem..."

Pozostało 580 znaków

Inter
2004-09-24 12:48
Inter
0

Co do załączników :)
W części kodu tam gdzie pobierasz konkretną wiadomość umieść:

 //pobiera informacje załącznikach ...
 ListView2.Clear;
 for IleZalacz:= 0 to Pred(IdMessage.MessageParts.Count) do
 begin
   if (IdMessage.MessageParts.Items[IleZalacz] is TIdAttachment) then
   begin
     lista:= ListView2.Items.Add;              
     lista.Caption:= TIdAttachment(IdMessage.MessageParts.Items[IleZalacz]).Filename;
   end;
 end;

W Indy jako tako samych załączników nie ściągniesz albowiem to kod listu już zwiera w sobie załączniki.
Po ściągnięciu wiadomośći automatycznie załączniki wyodrębnione zostają z listu i zapisują się do kat. Temp pod jakimiś tam nazwami o rozszerzeniu *.tmp
Wpisz instrukcie: IdMessage.SaveToFile('KodListu.txt'); w części gdzie pobierasz
wiadomość i sam zerknij... tam są zakodowane załączniki :)

Pozostało 580 znaków

2004-09-26 19:13

Rejestracja: 17 lat temu

Ostatnio: 4 godziny temu

Lokalizacja: Rzeszów

0

Ale jak sprawdzic czy jest cos nowego w skrzynce w jakims okreslonym folderze, bo powyzsze kody pokazuja czy jest cos ogolnie w skrzynce

Pozostało 580 znaków

2004-09-26 21:52

Rejestracja: 17 lat temu

Ostatnio: 5 lat temu

0

Ale jak sprawdzic czy jest cos nowego w skrzynce w jakims okreslonym folderze, bo powyzsze kody pokazuja czy jest cos ogolnie w skrzynce

Musisz zapisywać nagłówki po każdym odbieraniu maili, a potem przy sprawdzaniu pobierasz nagłówek i sprawdzasz, czy jest zapisany, jeśli nie jest, to znaczy, że mail nie był jeszcze odbierany (czyli jest nowy).


Słowa kierownika : To, jak wy zdążycie to napisać, to ja mam w szeroko rozumianej du*ie.
http://project1.pl

Pozostało 580 znaków

Inter
2004-09-26 21:55
Inter
0

Cześć

IdPOP3.Retrieve(poz + 1, IdMessage); //pobranie wiadomości (cały kod listu)
IdMessage.SaveToFile('KodListu.txt'); //zapisanie wiadomości

a tu rozbicie tego na tekst:

 //pobiera body text (list w formie tekstu)...
 if IdMessage.MessageParts.Items[poz] is TIdText then
 begin
   tekst:= TStringList.Create;
   tekst.AddStrings( TIdText(IdMessage.MessageParts.Items[poz]).Body );
   tekst.SaveToFile('list.htm');
 end;

Pic polega na tym że w Indy nie zapiszesz tego w formie listu *.eml
tak jak to można zrobić ściągając wiadomość za pomocą gniazd
Musiałbyś wszystko do "kupki" poskładać - załączniki, body text itd..
Ale co do gniazd jest jeden kłopot o którym wspominałem pytając w
http://4programmers.net/Forum/viewtopic.php?id=58502

Pozostało 580 znaków

2004-09-26 22:05

Rejestracja: 17 lat temu

Ostatnio: 5 lat temu

0

Pic polega na tym że w Indy nie zapiszesz tego w formie listu *.eml

Nie zapiszesz? Ja to robię tuż po odebraniu (

IdPOP31.Retrieve(j, IdMessage);

)za pomocą zwykłego

TIdMessage.SaveToStream.

Słowa kierownika : To, jak wy zdążycie to napisać, to ja mam w szeroko rozumianej du*ie.
http://project1.pl

Pozostało 580 znaków

Inter
2004-09-26 23:40
Inter
0

hmmm..
Znaczy zapisujesz strumień do pliku i wychodzi Ci taki sam kod wiadomości jakbym pobrał go przy pomocy socketów ?
No bo jak go zapisuje też z komponentu IdMessage - tylko że...

IdMessage.SaveToFile('KodListu.txt');

to na tyle się różni
od tego pobranego socketami że nie da rady odczytać go jako *.eml

Mam rozumieć że "składasz" go w całość body, załączniki itd ?
Jeśli możesz to prosiłbym o pare linijek kodu

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0