Jak SKUTECZNIE wysyłać email z poziomu Delphi7?

Odpowiedz Nowy wątek
2011-08-11 15:13
0

Witam,
to moje pierwsze podejście do tematu Indy w Delphi7.
Potrzebuję napisać procedurę (a właściwie poprawić), która będzie wysyłać wiadomość e-mail z poziomu Delphi.
Program służy do obsługi zleceń i - w założeniach - o każdej zmianie statusu zlecenia Klient ma być informowany przez e-mail.

Na podstawie danych z sieci udało mi się napisać następujący fragment (oczywiście, przygotowanie dokładnej treści wiadomości pomijam, jako nieistotne dla problemu):

// ------------------------- PRZYGOTOWANIE WIADOMOŚCI ---------------------///
  Form1.IdMessage1.Recipients.EMailAddresses := MessageEditForm.le_odbiorca.Text;
  form1.IdMessage1.Subject := MessageEditForm.le_Temat.Text;
  Form1.IdMessage1.Body.Text := MessageEditForm.Memo_tresc.Text;
 
// --------------------- WYSYŁANIE WIADOMOŚCI ---------------------------- ///
 
  Form1.idSMTP1.Host:='poczta.o2.pl';
  Form1.idSMTP1.Username:='adres nadawcy';
  Form1.idSMTP1.Password:= 'hasło do konta pocztowego';
  Form1.idSMTP1.Send(Form1.idMessage1);

Użyte komponenty z pakietu Indy9 to:
TIdSMTP, TIdMessage, TIdSSLIOHandlerSocket (przy I10 zastąpiłem go TIdSSLIOHandlerSocketOpenSSL)

Niestety, wynikiem działania tej procedury jest błąd 'Could not load SSL Library', zarówno przy próbie wysłania wiadomości przez serwer tlen.pl, jak też przez gmail.com.

Walczyłem z tym 2 dni, przeczytałem mnóstwo wskazówek, robiłem mnóstwo poprawek i nadal efekt zerowy...

W końcu przeszedłem na Indy10 - czytałem, że mniej problematyczny w stosunku do 9. Zmodyfikowałem lekko kod (na potrzeby I10), ale.... mam już totalny przecier z mózgu i nadal brak efektu...
Jak to ugryźć?
Jak skonfigurować komponenty?


Pozostało 580 znaków

2011-08-11 15:26
0

Moze to Ci pomoze: http://stackoverflow.com/ques[...]brary-with-delphi-2007-apache (pierwsza odpowiedz)

Pozostało 580 znaków

2011-08-11 15:37
0

W folder gdzie masz program wrzuć biblioteki libeay32.dll i ssleay32.dll (Pobierz je stąd : http://indy.fulgan.com/SSL/). Oczywiści nie zapomnij podłączyć tego komponentu od szyfrowania do idSMTP.IOHandler. Dla Gmail, konfiguracja będzie wyglądała tak :
Host : smtp.gmail.com
Port : 465
Szyfrowanie : TLSv1
Parametr UseTLS dla idSMTP ustaw na utUseImplicitTLS.

Będzie działało na 100%, bo właśnie testowałem.

PS. Host i Port wpisuj do idSMTP, podpięty komponent od SSL/TLS sam się dostosuje.
PS2. Sprawdziłem jak sprawa się ma dla o2.pl(tlen.pl) i w konfiguracji nic nie trzeba zmieniać oprócz oczywiście hosta.

Pozdrawiam.

edytowany 2x, ostatnio: Golden_Mind, 2011-08-11 16:15

Pozostało 580 znaków

2011-08-11 23:10
0

Dzięki za pomoc - poszło dalej, jednak nadal wywala mi błąd.
Z poziomu kompilatora:
user image

Z poziomu programu:
user image

Nadal jestem głupi...


edytowany 1x, ostatnio: fourup, 2011-08-11 23:12

Pozostało 580 znaków

2011-08-11 23:28
0

Może kAzek się wypowie także, bo to tutaj niemal ekspert od Delphi + Indy. Jednak jeżeli nie musi to być konieczne oparte o Indy, to polecam spróbować z Synapse. Dołączony do tego posta jest kod + exek + wymagane przez Synapse również te dwie dllki, w wersjach pobranych ze strony projektu Synapse. Całóśc była testowana na o2.pl oraz gmail i działała. Jednak jeżeli musi to być pod Indy to może ktoś inny coś lepszego doradzi. Nie chcę narzucać Synapse, bo wielu mi to tutaj zarzucało, ale wiem że Indy nierozwijane sprawia problemy, a ja mam je wprawdzie w palecie komponentów pod Delphi 7, jednak praktycznie nie korzystałem z nich od bardzo długiego czasu.


Pozostało 580 znaków

2011-08-11 23:49
0

@Olesio, pobrałem, odpaliłem Twój program i... 'Nie można się zalogować! Błąd:'
Nie wiem już co to może być, bo skoro u Ciebie hulało, u Golden_Mind's hulało, a u mnie się sypie...

Uściślając: Win7U32, Avira Personal, D7PE...
Nawet wyłączyłem Thunderbirda, GoogleTalka i wszystko inne, co mogło się logować do poczty... i nadal nic...


Pozostało 580 znaków

2011-08-11 23:55
0

Co prawda nie mam pod ręka zrobionego klienta IMAP, ale możesz zobaczyć jak to działa przy POP3 i SMTP, program gotowy i z bibliotekami, w załączniku.Wpisałem Ci już odpowiednie porty i hosty w programie. Masz tam dodatkowo zrobiony przeze mnie postęp pobierania mail'ów i ich wysyłania.

Sorki zapomniałem o źródłach : http://www.wrzuc.to/8f3mRxcF9x.wt

edytowany 4x, ostatnio: Golden_Mind, 2011-08-12 00:24

Pozostało 580 znaków

2011-08-12 00:11
0
fourup napisał(a)

@Olesio, pobrałem, odpaliłem Twój program i... 'Nie można się zalogować! Błąd:'
Nie wiem już co to może być, bo skoro u Ciebie hulało, u Golden_Mind's hulało, a u mnie się sypie...

Uściślając: Win7U32, Avira Personal, D7PE...
Nawet wyłączyłem Thunderbirda, GoogleTalka i wszystko inne, co mogło się logować do poczty... i nadal nic...

Sprawdziłem podesłany tytaj mój program wysyłając z gmaila na konto w o2.pl. Wprawdzie e-mail ląduje w spamie, ale dochodzi. Ważne jest chyba przy gmailu żeby w polu adres nadawcy był prawidłowy adres w postaci [email protected]. Może jak na chwile wyłączyć antywirusa albo firewall to pójdzie, chociaż to nie powinno przeszkadzać. Jeżeli podałeś dobre dane servera. Natomiast nie wiem jak będzie z obsługa IMAP. Ja pisałem ten program dośc dawno i pod kątem obsługi SMTP.


Pozostało 580 znaków

2011-08-12 02:59
0

Ostatecznie skrypt na serwerze wysyłający maila i z poziomu Delphi wywoływanie go

Pozostało 580 znaków

2011-08-12 09:04
Janusz
0

Głupi pomysł, (ja tak kiedyś robiłem, ale to dalej głupi pomysł)
Lepiej tak
Połóż na formę komponenty TidMessage i TidSMTP.

Message.From.Name := 'Jan Kowalski';  //Nazwa Nadawcy
Message.From.Address := '[email protected]';  //Adres Nadawcy
Message.Recipients.EMailAddresses := '[email protected]';  //Adres Odbiorcy
Message.Subject := 'Jagódki';  //Temat
 
SMTP.UserName := jan_kowalski@op.pl';  //Jeszcze raz login nadawcy
SMTP.Password := '12344321';                  //Hasło nadawcy
SMTP.Host :=  'smtp.poczta.onet.pl';       //Protokół
SMTP.Port := 587;                                  //Port
SMTP.AuthenticationType := atLogin;      // autoryzacja SMTP
SMTP.Connect;
  try
    SMTP.Send(Message);
  finally
    SMTP.Disconnect;
  end;

Pozostało 580 znaków

2011-08-12 10:34
0

@Janusz po jakiego czorta, podajesz mu kod, który on sam już dawno napisał ?
Btw. Sprawdziłem czy również email wysłany z konta gmail na o2.pl ląduj w spamie jak to wygląda przy kodzie olesia, ale jak się okazało u mnie e-mail pokazuje się w Odebranych, więc wszystko jest w porządku.

Pozdrawiam.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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