Witam, chciałbym napisac program w Delphi ktory po kliknieciu w button wysyla mi mail z trescia Edit boxa.
Sa 3 pola na Formie, po kliknieciu Wyslij zeby wysylalo na moj mail. Napisalem prosta przegladarke w Delphi ale w ogóle sie na tym nie znam, nie umiem instalowac componentow, Indy czy co to tam jest :P, jezeli taki temat byl to przepraszam, jezeli ktos bylby tak laskawy i mogl mi napisac jak sie to robi, lub jak sie instaluje IdMessage, IdSMTP bede bardzo wdzieczny, Dzieki !
Alayah napisał(a)
... jak sie instaluje IdMessage, IdSMTP bede bardzo wdzieczny, Dzieki !
Algorytm instalacji:
- indy_setup.exe
- Next
- Next
- ...
itd.
Algorytm instalacji:
- indy_setup.exe
- Next
- Next
- ...
itd.</quote>
Tyle ze nie moge nigdzie znajsc instalki do Indy, same source code bo linki w ktorych byly instalki wygasly :(
Do jasnej ciasnej, ile się z Miśkiemd mamy powtarzać, że Indy ssie i Synapse rządzi. Dlaczego nie chcesz do
wysyłania emaili używać czegoś co jest prostsze i lepsze od badziewnego Indy. Pamiętajcie Synapse rządzi ;P
Ok, oto opis co masz zrobić. 1. Ze strony http://synapse.ararat.cz/doku.php/download pobierasz synapse i do
katalogu ze swoim projektem rozpakowujesz lub po rozpakowaniu kopiujesz moduły o następujących nazwach:
blcksock.pas
smtpsend.pas
sswin32.pas
synacode.pas
synafpc.pas
synaip.pas
synautil.pas
synsock.pas
Bo Synapse się nie instaluje tylko rozpakowuje i używa. Możesz także wypakować te pliki do podkatalogu
LIB w Delphi. Jednak ja mam taki zwyczaj, i Tobie też polecam, że moduły wszystkich używanych w kodzie
niestandardowych modułów trzymam w katalogu z projektem, a ewentualne komponenty (poza SynEditem i
Indy, które mam zainstalolwane, ale już nie używam) mimo że mogę je instalować w używanym Delphi 7 to
tworzę je dynamicznie. Robię to po to aby ewentualnie jak jakaś osoba otrzyma ode mnie kod źródlowy, to
mogła otworzyć plik projektu i całość bez problemów skompilowac bez potrzeby instalowania komponnetów
u siebie. 2. To Teraz dodajesz do uses moduł smtpsend. 3. Resztę załatwi poniższy kod. Adres nadawacy
oraz odbiorcy muszą być prawidłowe. W Memo1.Lines jest treść e-maila, bo wymagany jest tu typ TStrings.
Kod poniżej wysyła z konta na poczta.o2.pl i działa dobrze. Testowane pod Delphi 7 Personal. Mail doszedł.
if SendToEx('nadawca@adres..net', 'odbiorca@adres.net', 'Temat', 'poczta.o2.pl:587', Memo1.Lines, 'user', 'pass') = True then
begin
ShowMessage('Wysłane OK.');
end
else
begin
ShowMessage('Jakiś błąd!');
end;
Pakiet Synapse zawiera także inne moduły, a w nich klasy do wysyłania i odbierania e-maili. Jednak do tej
prostej operacji lepiej skorzystać z gotowej funkcji. Oczywiście poza tym Synapse świetnie obsluguje też:
protokół FTP oraz HTTP. I mam nadzieję, że post szybko nie zniknie żeby mozna do niego odslyać innych.
Wielkie T H X olesio. Niewiem jak moge ci sie odwdzieczyc :P zaraz przetestuje ale z tego co widze w 99% bedzie dzialac, Dziekowa.
- indy9.0.19_d7.exe
olesio: "dodajesz do uses modul stmpsend"
Wiem, pewnie myslicie po co wgl zaczynam sie bawic w Delphi nie znajac podstaw, ale niewiem jak dodac modul do uses .. :P ..
Synapse jest do d**y
Ja uzywam tego wlasnego modulu i dziala dobrze. Wszystko w watkach ze zwracaniem rezultatu.
SendMailIndy.pas
unit SendMailIndy;
interface
uses
IdMessage, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdMessageClient, IdSMTP, Classes;
type
TStatus = (sWyslano, sNiePolaczono, sNieWyslano);
TEmail = record
Host,
Login,
Haslo,
AdresOdbiorcy,
Temat,
Tresc,
Zalacznik: String;
end;
TOnStatusEvent = procedure(AStatus: TStatus; AEmail: TEmail) of object;
TWyslijMail = class(TThread)
private
FEmail: TEmail;
FOnStatus: TOnStatusEvent;
FStatus: TStatus;
protected
procedure Execute; override;
function Send: TStatus;
procedure DoOnStatus;
public
constructor Create(Email: TEmail; OnStatus: TOnStatusEvent);
end;
implementation
constructor TWyslijMail.Create(Email: TEmail; OnStatus: TOnStatusEvent);
begin
FreeOnTerminate:= True;
FEmail := Email;
FOnStatus := OnStatus;
inherited Create(False);
end;
procedure TWyslijMail.Execute;
begin
FStatus := Send;
Synchronize(DoOnStatus);
end;
procedure TWyslijMail.DoOnStatus;
begin
if Assigned(FOnStatus) then
FOnStatus(FStatus, FEmail);
end;
function TWyslijMail.Send: TStatus;
var
idSMTP: TIdSMTP;
idMessage: TIdMessage;
begin
idSMTP := TidSMTP.Create(nil);
idMessage := TidMessage.Create(nil);
try
idMessage.Clear; //czyszczenie zawartości komponentu IdMessage
idSMTP.Host := fEmail.Host; //ustawienie adresu IP/nazwy serwera
idSMTP.Username := fEmail.Login; //ustawienie nazwy użytkownika
idSMTP.Password := fEmail.Haslo; //ustawienie hasła użytkownika
idSMTP.AuthenticationType := atLogin; //ustawienie trybu authentifikacji
if not IdSMTP.Connected then begin
try
IdSMTP.Connect(-1);
except
Result := sNiePolaczono;
end;
end;
//jeżeli połaczenie jest zestawione ? wysyłanie wiadomości
if idSMTP.Connected then
begin
idMessage.From.Text := fEmail.Login; //dodanie informacji od kogo
idMessage.Subject := fEmail.Temat; //dodanie tematu
idMessage.Recipients.EMailAddresses := fEmail.AdresOdbiorcy; //dodanie adresu odbiorcy
idMessage.Body.Append(fEmail.Tresc); //treść
//dodanie załącznika do wiadomości
if fEmail.Zalacznik <> '' then
TidAttachment.Create(idMessage.MessageParts, fEmail.Zalacznik);
try
try
idSMTP.Send(idMessage); //wysyłanie wiadomości
Result := sWyslano;
except
Result := sNieWyslano;
end;
finally
idSMTP.Disconnect;
end;
end;
finally
idSMTP.Free;
idMessage.Free;
end;
end;
end.
i uzycie
procedure RezultatWyslaniaEmail(AStatus: TStatus; AEmail: TEmail);
{...}
procedure TMainForm.RezultatWyslaniaEmail(AStatus: TStatus; AEmail: TEmail);
begin
case AStatus of
sWyslano : ShowMessage('Wyslano pomyslnie');
sNiePolaczono: ShowMessage('Nie polaczono z serwerem');
sNieWyslano : ShowMessage('Polaczono z serwerem, ale wystapil blad podczas wysylania maila');
end;
end;
procedure TMainForm.Button1Click(Sender: TObject);
begin
Dane.Host :=
Dane.Login :=
Dane.Haslo :=
Dane.AdresOdbiorcy :=
Dane.Temat :=
Dane.Tresc :=
Dane.Zalacznik :=
TWyslijMail.Create(Dane, MainForm.RezultatWyslaniaEmail);
end;
Synapse wywal bo to szajs
Poczonkujoncy: e tam, nie znasz się, nie umiesz napisać swojego nicka to i na Synapse się nie znasz.
Synapse też można używać w wątkach. A jak uważasz, że Synapse jest złe, to napisz własny pakiet i
to od zera to chętnie go przetestuje jak będzie miał takie możliwości plus szybkość działania, jak ma
Synapse - to zwracam honor. A do Alayah: daruj sobie programowanie albo poczytaj jakieś kursy, a
tak to masz problem z banałami. Widzisz na początku kodu modułu sekcję uses? Zobacz, jak dodane
sa tam inne standardowe moduły, to będziesz wiedział, jak masz dopisać kolejny isnitejący. Proste i.
@Poczontkujoncy: Dzieki, jakbym sie ciut bardziej znal na obsludze programu to bym doszedl jak to wykminic :P
@olesio: wszystko Dziala, wielkie Dzieki
Czy Synapse obsługuje SSL? Jeśli nie, to z gmail się go nie użyje.
Tajemniczy Don Pedro napisał(a)
Czy Synapse obsługuje SSL? Jeśli nie, to z gmail się go nie użyje.
obsługuje i działa z gmailem
Znam Indy, a Synapse znam tylko z zachwalań niektórych forumowiczów. Liczba pochwał skłoniła mnie do zainteresowania się tym pakietem. Pytanie z ciekawości, jak się to sprawdza jako klient SMTP, chodzi mi w szczególności o wiadomości wieloczęściowe ? W zależności czy mail ma część html, czy nie, czy ma załączniki czy nie, czy jest z obrazkami czy nie, każda kombinacja owocuje różną docelową strukturą maila (multipart/mixed, related, etc). Jak synapse to łyka ? W Indy jest to dosyć proste.
b
a jak ma łykać?? Piszesz co wysyła i wysyła