Problem z TIdPOP3

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

Problem z TIdPOP3

Nowy postprzez Miroo_007 » czwartek, 5 marca 2009, 13:14

Kod: Zaznacz cały
bool TKlient::Wczytaj_email(void) {
   int ilosc_maili;
   Form1->IdPOP31->Connect;
   ilosc_maili = Form1->IdPOP31->CheckMessages;
   //...
}

Łączę się z pocztą gmail i mam wpisane takie dane:
Host : pop.gmail.com
Password : cos_tam
Username : cos_tam
Port: 995
Ale wyskakuje mi taki błąd: [BCC32 Error] Unit1.cpp(85): E2235 Member function must be called or its address taken
Co to może być?
Avatar użytkownika
Miroo_007
Intelektryk
Intelektryk
 
Posty: 160
Dołączył(a): sobota, 18 października 2008, 10:49
Lokalizacja: Rzeszów
Podziękował : 0
Otrzymał podziękowań: 0
    NieznanyNieznana

Re: Problem z TIdPOP3

Nowy postprzez Miroo_007 » piątek, 6 marca 2009, 19:28

Może ktoś zna inne narzędzie, które można zastosować zamiast TIdPOP3 (i nie mówię tu o TNMPOP3)?
Avatar użytkownika
Miroo_007
Intelektryk
Intelektryk
 
Posty: 160
Dołączył(a): sobota, 18 października 2008, 10:49
Lokalizacja: Rzeszów
Podziękował : 0
Otrzymał podziękowań: 0
    NieznanyNieznana

Re: Problem z TIdPOP3

Nowy postprzez Miroo_007 » sobota, 9 maja 2009, 15:44

Mam następny problem z TIdPOP3. A mianowicie. Chcę się połączyć z pocztą w Gmail. Ta poczta posiada szyfrowanie SSL co za tym idzie wykorzystuje port 995. No ale zacznę opowieść od początku:
1. Ściągnąłem protokół SSL dla Indy 10 ze strony: http://indy.fulgan.com/SSL/.
Wybrałem openssl-0.9.8j-win32&win64.zip
2. Rozpakowałem i dodałem biblioteki libeay32.dll oraz ssleay32.dll do mojego programu.
3. Dodałem do mojego projektu następujące kontrolki: TIdPOP3 oraz TIdSSLIOHandlerSocketOpenSSL
4. Skonfigurowałem kontrolkę TIdPOP31:
IOHandler = SSLHandler
AutoLogin = True
Host = 'pop.gmail.com'
Username = 'moj_login@gmail.com'
UseTLS = utUseImplicitTLS
Password = 'moje_haslo'
Port = 995
5. Skonfigurowałem kontrolkę TIdSSLIOHandlerSocketOpenSSL1:
Destination = 'pop.gmail.com:995'
Host = 'pop.gmail.com'
MaxLineAction = maException
Port = 995
DefaultPort = 0
SSLOptions.Method = sslvSSLv2
SSLOptions.Mode = sslmUnassigned
SSLOptions.VerifyMode = []
SSLOptions.VerifyDepth = 0
6. Napisałem kod pobierający liczbę wiadomości w skrzynce. Nie zamieszczam go ponieważ można go znaleźć
na stronie Cyfrowego Barona.
7. Na koniec skompilowałem i wyskakuje mi błąd: Socket Error # 10060
Connection timed out.
Avatar użytkownika
Miroo_007
Intelektryk
Intelektryk
 
Posty: 160
Dołączył(a): sobota, 18 października 2008, 10:49
Lokalizacja: Rzeszów
Podziękował : 0
Otrzymał podziękowań: 0
    NieznanyNieznana

Re: Problem z TIdPOP3

Nowy postprzez wargo » sobota, 9 maja 2009, 20:06

Miroo_007 napisał(a):5. Skonfigurowałem kontrolkę TIdSSLIOHandlerSocketOpenSSL1:
Destination = 'pop.gmail.com:995'
Host = 'pop.gmail.com'
Port = 995

Myślę że może jak masz podany port w oddzielnym polu to chyba nie potrzeba podawać w adresie ale tu są dwa pola - destination i host a to jest różnica i tu może być problem!
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
Podziękował : 12
Otrzymał podziękowań: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    NieznanyNieznana

Re: Problem z TIdPOP3

Nowy postprzez Cyfrowy Baron » niedziela, 10 maja 2009, 08:17

Jest tak:

Kod: Zaznacz cały
Form1->IdPOP31->Connect;


a powinno być tak:

Kod: Zaznacz cały
Form1->IdPOP31->Connect();
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
    NieznanyNieznana

Re: Problem z TIdPOP3

Nowy postprzez Miroo_007 » niedziela, 10 maja 2009, 12:56

Cyfrowy Baron napisał(a):Jest tak:

Kod: Zaznacz cały
Form1->IdPOP31->Connect;


a powinno być tak:

Kod: Zaznacz cały
Form1->IdPOP31->Connect();

Mały błąd przy pisaniu postu na tym forum. W kodzie programu mam Connect().

wargo napisał(a):Myślę że może jak masz podany port w oddzielnym polu to chyba nie potrzeba podawać w adresie ale tu są dwa pola - destination i host a to jest różnica i tu może być problem!

Parametr destination jest automatycznie tworzony z dwóch parametrów host i port. Więc ten zapis jest poprawny.
Avatar użytkownika
Miroo_007
Intelektryk
Intelektryk
 
Posty: 160
Dołączył(a): sobota, 18 października 2008, 10:49
Lokalizacja: Rzeszów
Podziękował : 0
Otrzymał podziękowań: 0
    NieznanyNieznana

Re: Problem z TIdPOP3

Nowy postprzez Cyfrowy Baron » niedziela, 10 maja 2009, 13:53

Klucz do rozwiązania problemu tkwi w tym komunikacie:


[BCC32 Error] Unit1.cpp(85): E2235 Member function must be called or its address taken




podaj kod który znajduje się w 85 linii, czyli ten na który wskazuje kompilator jako błędny.
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
    NieznanyNieznana

Re: Problem z TIdPOP3

Nowy postprzez Miroo_007 » niedziela, 10 maja 2009, 15:58

[BCC32 Error] Unit1.cpp(85): E2235 Member function must be called or its address taken

Z tym błędem już sobie poradziłem wcześniej. Teraz jest problem, z tym że nie dostaje informacji od serwera.
Avatar użytkownika
Miroo_007
Intelektryk
Intelektryk
 
Posty: 160
Dołączył(a): sobota, 18 października 2008, 10:49
Lokalizacja: Rzeszów
Podziękował : 0
Otrzymał podziękowań: 0
    NieznanyNieznana

Re: Problem z TIdPOP3

Nowy postprzez Cyfrowy Baron » poniedziałek, 11 maja 2009, 09:21

Udzielasz bardzo skąpych informacji, a trudno się domyśleć z czym masz dokładnie problem.


TIdPOP3->Host - określa adres serwera
TIdPOP3->Password - określa hasło
TIdPOP3->Port - określa port, na którym program będzie łączył się z serwerem
TIdPOP3->UserId – określa login u ytkownika.
TIdPOP3->Connected: boolean - określa czy nawiązano połączenie
TIdPOP3->Connect - próbuje nawiązać połączenie z serwerem
TIdPOP3->CheckMessages: longint - zwraca liczbę wiadomości w skrzynce
TIdPOP3->Disconnect - kończy połączenie z serwerem.
TIdPOP3->Retrieve(const MsgNum: Integer; AMsg: TIdMessage): Boolean – pobiera wiadomość o wskazanym indeksie i umieszcza w zmiennej AMsg




Tutaj masz gotowe rozwiązanie.
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
    NieznanyNieznana

Re: Problem z TIdPOP3

Nowy postprzez Miroo_007 » poniedziałek, 11 maja 2009, 15:36

Znam to sprawozdanie z yoyo.pl. Tylko tam sprawa wygląda bardzo prosto ponieważ autor łączy się z pocztą przez port 110. Czyli bez szyfrowania SSL. Ja się łącze przez port 995 (z szyfrowaniem SSL) i już nie jest tak prosto.
Cyfrowy Baron napisał(a):TIdPOP3->UserId – określa login użytkownika.

Zapis UserId jest starym zapisem. Teraz jest Username.
Miroo_007 napisał(a):6. Napisałem kod pobierający liczbę wiadomości w skrzynce. Nie zamieszczam go ponieważ można go znaleźć na stronie Cyfrowego Barona.

Mój błąd. Nie ma tego kodu na stronie Cyfrowego Barona ale jest na tym poście, czyli:
Kod: Zaznacz cały
bool TKlient::Wczytaj_email(void) {
   int ilosc_maili;
   Form1->IdPOP31->Connect();
   ilosc_maili = Form1->IdPOP31->CheckMessages;
   //...
}

OK. To może pytanie z innej beczki. Jaka jest kontrolka Indy, która zapobiega zerwaniu połączenia. Może to jest rozwiązaniem.
Ostatnio edytowano poniedziałek, 11 maja 2009, 17:57 przez Miroo_007, łącznie edytowano 1 raz
Avatar użytkownika
Miroo_007
Intelektryk
Intelektryk
 
Posty: 160
Dołączył(a): sobota, 18 października 2008, 10:49
Lokalizacja: Rzeszów
Podziękował : 0
Otrzymał podziękowań: 0
    NieznanyNieznana

Re: Problem z TIdPOP3

Nowy postprzez Cyfrowy Baron » poniedziałek, 11 maja 2009, 17:31

Chyba TIdAntiFreze
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
    NieznanyNieznana

Re: Problem z TIdPOP3

Nowy postprzez Miroo_007 » poniedziałek, 11 maja 2009, 17:40

Znalazłem jakieś rozwiązanie tego problemu na zagranicznym forum. Biblioteki DLL, które należy dołączyć do programu trzeba przekopiować albo do katalogu programu albo do katalogu systemowego system32. Przekopiowałem do katalogu programu ale nie udało mi się przekopiować do katalogu system32 ponieważ już są tam te biblioteki (o innym rozmiarze i starsze) i nie mogę ich zastąpić dlatego, że jakiś program je używa. Jak można sprawdzić, który program używa (przetwarza) dany plik.

Problem może wynikać z tego że w katalogu system32 są starsze biblioteki OpenSSL.
Avatar użytkownika
Miroo_007
Intelektryk
Intelektryk
 
Posty: 160
Dołączył(a): sobota, 18 października 2008, 10:49
Lokalizacja: Rzeszów
Podziękował : 0
Otrzymał podziękowań: 0
    NieznanyNieznana

Re: Problem z TIdPOP3

Nowy postprzez Miroo_007 » poniedziałek, 11 maja 2009, 18:29

Znalazłem przyczynę problemu. W kodzie programu zmieniałem port i hosta. No i tam były błędy. Podsumowując jak wyskoczy Ci błąd: Socket Error # 10060 Connection timed out to mogą być następujące błędy:
1. Timeout w kontrolce TIdSSLIOHandlerSocketOpenSSL jest za krótki (najlepiej ustawić -1)
2. IdPOP3->Username jest nieprawidłowy.
3. IdPOP3->Port jest nieprawidłowy.

...
Ale wyskoczył mi nowy błąd. EIdOSSLCouldNotLoadSSLLibrary czyli błąd załadowania bibliotek libeay32.dll oraz ssleay32.dll. Podobno jest to problem z konfliktem Indy i OpenSLL ale nie będę się już z tym bawił. Zaloguje się na inne konto pocztowe bez SSL.
Avatar użytkownika
Miroo_007
Intelektryk
Intelektryk
 
Posty: 160
Dołączył(a): sobota, 18 października 2008, 10:49
Lokalizacja: Rzeszów
Podziękował : 0
Otrzymał podziękowań: 0
    NieznanyNieznana


  • 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 4 gości