VC++ e-mail odbieranie poczty pop3


(Latos 89) #1

Witam,

od dawna nie robiłem nic w kierunku programowania.

Ale potrzebowałbym aplikacje która pobiera wybrane e-maile i przerabia ich zawartość odsyłając dalej.

Tutaj problem, nie mam zielonego pojęcia jak odbierać pocztę, wszędzie pełno poradników o wysyłce aby.

Będę wdzięczny jakąkolwiek pomoc.

Wiem tyle że pop3 nie obsługuje System::Net::Mail, trzeba użyć System::Net::Socket i Security


(nnick) #2

Zacznij od ogarnięcia http://tools.ietf.org/html/rfc1939. POP3 w swojej czystej postaci jest bardzo prostym protokołem i z poziomu terminala możesz go obsłużyć (zresztą podobnie do smtp). Wystarczy Ci TcpClient.


(Latos 89) #3

Udało mi się dojść co i jak, teraz aby kodowania itp:D

Piszę w c++ CLR,

using namespace System::Net::Sockets;

using namespace System::Net::Security;

using namespace System::IO;

public: TcpClient^ client;

public: SslStream^ stream;

public: StreamReader^ sr;

public: StreamWriter^ sw;

Funkcja pobierająca dane:

client = gcnew TcpClient();

client->Connect(serwer, 995);

stream = gcnew SslStream(client->GetStream(), false);

stream->AuthenticateAsClient(serwer);

sr = gcnew StreamReader(stream);

sw = gcnew StreamWriter(stream);

textBox1->Text ="C. Łączenie z POP3";

textBox1->Text = textBox1->Text + "\r\nS." + sr->ReadLine();

sw->WriteLine("USER " + uzytkownik);

sw->Flush();

textBox1->Text = textBox1->Text +"\r\nC. USER";

textBox1->Text = textBox1->Text +"\r\nS. " + sr->ReadLine();

sw->WriteLine("PASS " + haslo);

sw->Flush();

textBox1->Text = textBox1->Text +"\r\nC. PASS";

textBox1->Text = textBox1->Text +"\r\nS. " + sr->ReadLine();

Dzięki temu połączyłem się z serwerem poczty.

Tutaj przydatna stronka od mnie:

http://nss.et.put.poznan.pl/study/proje ... /pop3.html

AAA, uzytkownik, serwer, haslo to stringi i pamiętajcie o "spacji" (mi to przy-stworzyło problemu bo zrobiłem "PASS" a nie "PASS ", tak samo z USER - trochę minęło zanim zauważyłem :P)

Dzięki nnick za pomoc i trop :slight_smile:

-- Dodane 26.02.2012 (N) 18:31 --

Mam jeszcze jedno pytanie, jak pobrać załącznik??

-- Dodane 28.02.2012 (Wt) 6:16 --

Co do załącznika do już jakiś czas temu sobie poradziłem

FileStream^ fs = gcnew FileStream(nazwa_pliku , FileMode::CreateNew);

fs->Write(Convert::FromBase64String(zalacznik),0,Convert::FromBase64String(zalacznik)->Length);

fs->Close();