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ść.
;( ;( ;( ;( ;( ;( ;( ;( ;(
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ść.
;( ;( ;( ;( ;( ;( ;( ;( ;(
samson napisał:
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ść.
No to chyba powinieneś poczytać o protokole SMTP--__________________________________
Pozdrawiam...
piechnat
port 25
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
:-))
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
:-))
wszystko ok, ale to nie przez gniazdka :D --__________________________________
Pozdrawiam...
piechnat
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;
Pozdrówka
>To 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
Pozdrówka
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
Pozdrówka
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
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...
Pozdrówka
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]>
www.4programmers.net
Pozdrówka
Zauważyłem że nie jest to proste :( . Mimo to dzięki, będe walczył dalej :-)