Piszę właśnie klienta poczty dla konta pocztowego Walla. Walla nie dysponuje smtp i pop3, muszę więc wszystko pisać przez HttpWebRequest i HttpWebResponce.
Program prawie gotowy-oprócz możliwości ściągania załączników z danego konta.
Zbudowałem sobie taką metodą:
private void Download()
{
string remoteFilename; // Adres pliku na serwerze
String localFilename; // Gdzie ma być zapisany plik, np: @"C:\folder\plik.jpg"
int bytesProcessed = 0;
Stream remoteStream = null;
Stream localStream = null;
WebResponse response = null;
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(remoteFilename);
request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(cookies); // Pobieramy cookies ze zmiennej cookies
if (request != null)
{
response = request.GetResponse();
if (response != null)
{
remoteStream = response.GetResponseStream();
localStream = File.Create(localFilename);
byte[] buffer = new byte[1024];
int bytesRead;
do
{
bytesRead = remoteStream.Read(buffer, 0, buffer.Length);
localStream.Write (buffer, 0, bytesRead);
bytesProcessed += bytesRead;
} while (bytesRead > 0);
}
}
}
catch
{
MessageBox.Show("Błąd!");
}
finally
{
if (response != null) response.Close();
if (remoteStream != null) remoteStream.Close();
if (localStream != null) localStream.Close();
}
}
Niby pliki pobiera, ale:
-ściągany plik .jpg ma inną wielkość niż orginalny plik, ściągany plik jest mniejszy (ta różnica jest naprawdę mała, plik 1: 16, 4 KB a plik 2: 16, 5 KB .Uwaga: mimo, że wielkości tych plików są różne, oba zdjęcia są jednakowe pod względem obrazu
-masakra jest dopiero w plikach doc i innych:
Plik origalny .doc zawiera 2 jakieś tam wyrazy, natomiast plik ściągnięty po otworzeniu wygląda tak:
http://img515.imageshack.us/img515/507/plik2un.jpg
Z innymi plikami jest podobnie(rar, exe, dll, i inne)
Nie wiem jak sobie z tym poradzić, macie jakieś pomysły?