Odbieranie poczty+ problem z Memo

problemy z tworzeniem programów do obsługi sieci, internetu, e-mail itp..

Odbieranie poczty+ problem z Memo

Nowy postprzez mrowa19861 » poniedziaÅ‚ek, 1 lutego 2010, 19:37

Witam
Mój problem polega na tym że w mojej aplikacji odbieram pocztę i wszystko jest ok ale gdy chce wyświetlić treść wiadomości w Memo to niestety wyświetlana jest tylko treść tych wiadomości które mają załącznik, bo wtedy sama treść też jest w załączniku. Dodatkowo jak mamy treść w formacie html to wyświetla się cały kod.

Za wyświetlenie poczty odpowoada poniższy kod (zresztą całość jest bazowana na tutorialu cyfrowego barona )

Kod: Zaznacz cały
  void __fastcall TForm1::ListView1SelectItem(TObject *Sender,
      TListItem *Item, bool Selected)
{
   Memo2->Lines->Clear();


  if(Selected && Item)
  {
        ListBox1->Clear();
        IdMessage2 =(TIdMessage*)Item->Data;
         Memo2->Clear();

        for(int i=0;i<IdMessage2->MessageParts->Count;i++)
        {   
            if(IdMessage2->MessageParts->Items[i]->DisplayName=="TIdText")

            {
               TIdText *IdText = (TIdText*)IdMessage2->MessageParts->Items[i];

               Memo2->Lines->AddStrings(IdText->Body);


            }

            if(IdMessage2->MessageParts->Items[i]->DisplayName=="TIdAttachment")
          {
             TIdAttachment *zal = (TIdAttachment*)IdMessage2->MessageParts->Items[i];
              ListBox1->Items->Add(zal->FileName);
            }
            else
            {
              Memo2->Lines->Add(IdMessage2->Body->CommaText);
            }
                    }
     }     
}


Jeśli, ktoś mógłby mi doradzić co i jak to z góry dzięki.
Avatar użytkownika
mrowa19861
Bladawiec
Bladawiec
 
Posty: 1
Dołączył(a): poniedziałek, 1 lutego 2010, 19:14
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder 6
Gadu Gadu: 0
    Windows XPFirefox

Re: Odbieranie poczty+ problem z Memo

Nowy postprzez Witold » Å›roda, 3 lutego 2010, 12:25

mrowa19861 napisał(a):Jeśli, ktoś mógłby mi doradzić co i jak to z góry dzięki.


Spróbuj za:
Kod: Zaznacz cały
IdMessage2 =(TIdMessage*)Item->Data;
Memo2->Clear();


wstawić:

Kod: Zaznacz cały
if (IdMessage1->Body->Count)
{
   Memo1->Lines->AddStrings(IdMessage1->Body);
}
Ostatnio edytowano środa, 3 lutego 2010, 16:19 przez Witold, łącznie edytowano 1 raz
Avatar użytkownika
Witold
Konstrukcjonista
Konstrukcjonista
 
Posty: 223
Dołączył(a): piątek, 29 sierpnia 2008, 10:53
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 14
Kompilator: bcb6, Turbo C++ Explorer
    Windows XPOpera

Re: Odbieranie poczty+ problem z Memo

Nowy postprzez Cyfrowy Baron » Å›roda, 3 lutego 2010, 13:45

Za wyświetlenie poczty odpowoada poniższy kod (zresztą całość jest bazowana na tutorialu cyfrowego barona )


Nigdzie nie tworzyłem tutorialu na odbieranie poczty, a jedynie na jej wysyłanie i masz tam taki kod:

Kod: Zaznacz cały
IdMessage1->Body->Append(Memo1->Text);


Body obiektu TIdMessage jest typu TStrings i Lines obiektu TMemo jest tego samego typu, więc musi zadziałać to co podał Witold. Piszesz, że wzorowałeś się na moim tutorialu, wiec jeżeli wzorowałeś się na wysyłaniu e-mail'i to ja tam nie kombinowałem tak jak Ty, tylko po prostu przepisałem AnsiString do AnsiString, ale można by to też zrobić inaczej pobierając zawartość TStrings obiektu TMemo co jest lepsze dla tekstu zawierającego formatowanie:

Kod: Zaznacz cały
IdMessage1->Body->AddStrings(Memo1->Lines);


Mając taki kod dla przepisywania wiadomości z Memo1 do IdMessage1 wystarczy go odwrócić, czyli masz to co zaproponował Witold, wiec nie będę tego powtarzał, ale można też pobrać sam tekst:

Kod: Zaznacz cały
Memo1->Lines->Text = IdMessage1->Body->Text;


albo tak:

Kod: Zaznacz cały
Memo1->Lines->Append(IdMessage1->Body->Text);


lub też tak:

Kod: Zaznacz cały
Memo1->Lines->Assign(IdMessage1->Body);




Powyższe przykłady maja to do siebie, że operują na zmiennych typu AnsiString, a czasami może zajść potrzeba posłużenia się typem char:

Kod: Zaznacz cały
Memo1->Lines->SetText(IdMessage1->Body->GetText());
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Aplikacje sieciowe

Kto przeglÄ…da forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 5 gości

cron