[Delphi]Gniazdka

0

Jak wysłać list email za pomocą gniazdek(koniecznie). Mam już połączenie z serwerem
no i całą resztę ale nie wiem za pomocą jakiej funkcji wysłać wiadomość.

;( ;( ;( ;( ;( ;( ;( ;( ;(

0

samson napisał:
Jak wysłać list email za pomocą gniazdek(koniecznie). Mam już połączenie z serwerem
&gtno i całą resztę ale nie wiem za pomocą jakiej funkcji wysłać wiadomość.

No to chyba powinieneś poczytać o protokole SMTP--__________________________________
Pozdrawiam...
piechnat

0

port 25

0

wrzucasz SMTP (komponent INDY) na formę, zaznaczasz go myszką, klikasz F1 i masz super przykład od Borlanda.
Możesz tez pokombinować sam, INDY nie jest takie trudne.....
[email protected]
POZDRAWIAM
DELPHI RULEZ
NIECH MOCz BĘDZIE Z WAMI
:-))

0

BTW...skoro już sie połączyłeś to wysyłasz tak...

procedure TForm1.WyslijClick(Sender: TObject);
begin
if NMSMTP1.Connected then {Jezeli jest połączenie..}
begin

NMSMTP1.EncodeType := uuMime; {Kodowanie}
NMSMTP1.PostMessage.FromAddress :=FromAdd.Text; {Nadawca, TEdit}
NMSMTP1.PostMessage.FromName :=FromNam.Text; {Imię nadawcy, TEdit}
NMSMTP1.PostMessage.ToAddress.Text :=ToAdd.Text; {Adres odbiorcy, TMemo}
NMSMTP1.PostMessage.ToCarbonCopy.Text :=Kopia.Text; {Kopia, TMemo}
NMSMTP1.PostMessage.ToBlindCarbonCopy.Text :=UkrytaKopia.Text; (jw}
NMSMTP1.PostMessage.Body.Text :=TrescMaila.Text; {Tmemo}
NMSMTP1.PostMessage.Subject :=Temat.Text; {TEdit}
NMSMTP1.PostMessage.ReplyTo :=OpdDo.Text; {Odpowiedz pod adres, TEdit}
NMSMTP1.SendMail;  {WYSYŁA MAILA}

end
else
ShowMessage('Aby wysłać wiadomość musisz się połączyć...');
end;

A najlepiej to zajrzyj do Helpa, bo mogłem coś pokręcić

POZDRAWIAM
[email protected]
POZDRAWIAM
DELPHI RULEZ
NIECH MOCz BĘDZIE Z WAMI
:-))

0

wszystko ok, ale to nie przez gniazdka :D --__________________________________
Pozdrawiam...
piechnat

0

Ja też się nad tym męczę. Czy ktoś ma pomysł, jak wysłać coś do serwera SMTP zwykłym gniazdkiem?

procedure TForm1.send(msg: String);
var
buf:array [0..2048] of char;
i:integer;
begin

for i:=1 to length(msg) do
buf[i-1]:=char(msg[i]);

klient.Socket.SendBuf(buf, length(msg));
end;

To napisałem, ale chyba nie działa, bo serwer nic nie odpowiada, a powinien odpowiedzieć '250 OK'---------------------------
Delphi 6

Pozdrówka

0

&gtTo napisałem, ale chyba nie działa, bo serwer nic nie odpowiada, a powinien odpowiedzieć '250 OK'

Po pierwsze to poco ten Buffer, to do niczego potrzbne i tylko z tym kłopoty :)
Po drugie server nic nie odpowie do pÓÓÓÓki nie wyśle mu się sygnału że to już koniec
nadawani widomości.
Specjalnie to się nie wgłębiałem w ten protokół ale po RCPT czy jakoś tak
wysyła się DATA i po odpoweidzi można wysyłać widomość zwyczajnym SendText
a jak już się skończy to się wysyła kropkę "." o taką :D i po niej wiadomośc zostaje
wysłana. --__________________________________
Pozdrawiam...
piechnat

0

Rzeczywiście, już widzę jeden błąd :). Wprawdzie serwer zwraca różne wiadomości jeszcze przed zakonczeniem wysyłania (musi potwierdzić każdą operację), ale nie zakończyłem tego znaczkami #13#10. A jeśli chodzi o wywalenie zmiennej buf, to jak ma być? Bo jeśli jako piewszy parametr sendbuf() dam stringa, to wyśle chyba tylko wskaźnik do tablicy znaków znajdującej się w pamięci? Czy może dać po prostu stały tekst? Ale tak chyba nie można?---------------------------
Delphi 6

Pozdrówka

0

A jeśli chodzi o wywalenie zmiennej buf, to jak ma być? Bo jeśli jako piewszy parametr sendbuf() dam stringa, to wyśle chyba tylko wskaźnik do tablicy znaków znajdującej się w pamięci? Czy może dać po prostu stały tekst? Ale tak chyba nie można?

Ja tam nie wiem jak można ale przed chwilą z ciekawości przeprowadziłem taką operację przy pomocy zwyczjnego SendText, wydaje mi się że jeżeli tak sobie wymyslili że sygnałem końca wiadomości jest osobno wysłane kropka i znak końca lini to chyba ilośc znaków takiej wiadomości nie ma znaczenia więc poco gmatwać się w tablice, przynajmnie tak mi się wydaję. --__________________________________
Pozdrawiam...
piechnat

0

Problem w tym, że ja nie wysyłam za pomocą sendtext(), ale sendbuf(). Ta funkcja nioe wysyła tekstu, ale bufor z danymi, dlatego musi być tablica, albo coś w tym rodzaju, co bedzie tym buforem.---------------------------
Delphi 6

Pozdrówka

0

hmm... a nie możesz po tym:
klient.Socket.SendBuf(buf, length(msg));
dać jeszcze klient.Socket.SendText('.'#13#10)
powinno zadziałać--__________________________________
Pozdrawiam...
piechnat

0

Chwilke czy mowa tu o Winsock1? Szukałem funkcji sendtext i nie znalazłem. Chodzi mi o to aby skorzystać z intefejsu najniższego poziomu a nie z jakiegoś komponentu.
Nie moge korzystać ani z NMSMTP, ani z innych komponentów!!!!
Szukałem chyba już wszędzie ;( ;( ;( ;( ;( ;( hmm...

0

Poradziłem sobie już z wysyłaniem przez clientsocket, wystarczyło na koniec zmiennej msg dać #13#10. Teraz właśnie będę kombinował, jak to wszystko zrobić przez winsock.---------------------------
Delphi 6

Pozdrówka

0

To nie jest takie proste. Szukaj pliku sendmail.zip na tej stronie. Tam jest wysylanie maili w WinAPI.
Najpierw nalezy wyslac komende MAIL (IMHO) do serwera. Pozniej przeslac naglowki i tresc, na koncu
kropke i komende QUIT. Tam masz to opisane.
--Pozdrawiam!
Adam Boduch &[email protected]&gt
www.4programmers.net

0

Małe sprostowanie: na początku się nie wysyła 'MAIL', tylko 'HELO nazwa twojego hosta'. A wracając do sprawy, czy ktoś ma źródła dowolnego, niekonsolowego programu do komunikacji przez winsock?---------------------------
Delphi 6

Pozdrówka

0

Zauważyłem że nie jest to proste :( . Mimo to dzięki, będe walczył dalej :-)

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