Wysyłanie poczty SMPT z wymogiem SSL

problemy z tworzeniem programów do obsługi sieci, internetu, e-mail itp..

Wysyłanie poczty SMPT z wymogiem SSL

Nowy postprzez Darek_C++ » wtorek, 27 października 2009, 15:47

Czy nowe wersje BCB (indy) obsługują wysyłanie poczty która jest szyfrowana SSL. Tepsa zmieniło porty i muszę napisać moduł do wysyłania poczty przy nowych ustawieniach wystarczy do tego mi biblioteka DLL obsługująca wysłanie, ale z nowymi ustawieniami. http://studia.elka.pw.edu.pl/net/msa.shtml
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    NieznanyNieznana

Re: Wysyłanie poczty SMPT z wymogiem SSL

Nowy postprzez Cyfrowy Baron » wtorek, 27 października 2009, 16:07

INDY 10 - komponent TIdSMTPRelay

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
Darek_C++
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Wysyłanie poczty SMPT z wymogiem SSL

Nowy postprzez Darek_C++ » wtorek, 27 października 2009, 16:26

Jak sądzisz, lub wiesz CB idzie metody zawarte w TIdSMTPRelay niezbędne do wysłania poczty z SSL umieścić w bibliotece DLL która będzie ładowana dynamicznie, lub statycznie i "z niej" wysłać pocztę ?
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    NieznanyNieznana

Re: Wysyłanie poczty SMPT z wymogiem SSL

Nowy postprzez Cyfrowy Baron » wtorek, 27 października 2009, 19:28

Tutaj nie pomogę. Nie korzystałem z tej biblioteki, wogóle nigdy nie napisałem programu z wykorzystaniem INDY, wiec znam je tylko pobieżnie z testów, a dotychczas testowałem tylko wersję 9.

Biblioteka DLL nie różni się wiele od aplikacji, więc jeżeli coś można umieścić w aplikacji to można stwierdzić z dużym prawdopodobieństwem, że to samo da się zrobić z biblioteką INDY.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Wysyłanie poczty SMPT z wymogiem SSL

Nowy postprzez Darek_C++ » piątek, 30 października 2009, 12:30

Udało się komuś z Was obsłużyć wysłanie emaila za pomocą IdSMTPRelay1 ? Ten komponent ma całkiem inne metody niż IdSMTP1 np:
IdSMTPRelay1->DNSServer
IdSMTPRelay1->SSLOptions

w necie nie znalazłem na ten temat informacji i nie mogę sobie poradzić :(
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    NieznanyNieznana

Re: Wysyłanie poczty SMPT z wymogiem SSL

Nowy postprzez banita » piątek, 30 października 2009, 13:05

tutaj masz przyklad w delphi jak wysylac maila z obsluga ssl. przyklad jest dla delphi 2009 wiec uwzglednia unicode.

KOD cpp:     UKRYJ  
{ Send Mail (with SSL) }

procedure TForm1.IdMessage_InitializeISO(var VHeaderEncoding: Char;
  var VCharSet: string);
begin
  VHeaderEncoding := 'B';
  VCharSet := 'UTF-8';
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  SMTP: TIdSMTP;
  SSL: TIdSSLIOHandlerSocketOpenSSL;
  Msg : TIdMessage;
begin
  SMTP := TIdSMTP.Create(nil);
  try
    SMTP.Host     := 'smtp.gmail.com';
    SMTP.Port     := 587;
    SMTP.Username := 'hoge@gmail.com'; // UserName
    SMTP.Password := 'hogehoge';       // Password
    SSL := TIdSSLIOHandlerSocketOpenSSL.Create;
    try
      SSL.Host := SMTP.Host;
      SSL.Port := SMTP.Port;
      SSL.Destination := SSL.Host + ':' + IntToStr(SSL.Port);
      SMTP.IOHandler := SSL;
      SMTP.UseTLS := utUseExplicitTLS;
      SMTP.Connect;
      Msg := TIdMessage.Create(SMTP);
      try
        Msg.OnInitializeISO           := IdMessage_InitializeISO;
        Msg.ContentType               := 'text/plain';
        Msg.CharSet                   := 'UTF-8';
      //Msg.ContentTransferEncoding   := 'BASE64'; // BASE64 (7bit)
        Msg.ContentTransferEncoding   := '8bit';   // RAW(8bit)      
        Msg.From.Name                 := 'hoge@gmail.com';
        Msg.From.Address              := 'hoge@gmail.com';
        Msg.Recipients.EMailAddresses := 'hoge@gmail.com';
        Msg.Subject                   := 'Unicode String (subject)';
        Msg.Body.Text                 := 'Unicode String (body)'; // Please include the character of 0x80(U+0080) or later.
        SMTP.Send(Msg);
      finally
        Msg.Free;
      end;
      SMTP.Disconnect;
    finally
      SSL.Free;
    end;
  finally
    SMTP.Free;
  end;
end;




{ Recv Mail (with SSL) }

procedure TForm1.Button2Click(Sender: TObject);
var
  POP3: TIdPOP3;
  SSL: TIdSSLIOHandlerSocketOpenSSL;
  Msg : TIdMessage;
  MsgCnt: Integer;
  BufLen,
  i,l: Integer;
  Body: UTF8String;
begin
  Memo1.Clear;
  POP3 := TIdPOP3.Create(nil);
  try
    POP3.Host     := 'pop.gmail.com';
    POP3.Port     := 995;
    POP3.Username := 'hoge@gmail.com'; // UserName
    POP3.Password := 'hogehoge';       // Password
    SSL := TIdSSLIOHandlerSocketOpenSSL.Create;
    try
      SSL.Host := POP3.Host;
      SSL.Port := POP3.Port;
      SSL.Destination := SSL.Host + ':' + IntToStr(SSL.Port);
      POP3.IOHandler := SSL;
      POP3.UseTLS := utUseImplicitTLS;
      POP3.Connect;
      Msg := TIdMessage.Create(nil);
      try
        MsgCnt := POP3.CheckMessages;
        for i:=1 to MsgCnt do
          begin
            POP3.Retrieve(i, Msg);
            Memo1.Lines.Add('Subject: ' + Msg.Subject);
            Memo1.Lines.Add('Body:');
 
            // NG
//          Memo1.Lines.Add(Msg.Body.Text);
 
            // OK
            BufLen := Length(Msg.Body.Text);
            SetLength(Body, BufLen);
            for l:=1 to Length(Msg.Body.Text) do
              Body[l] := AnsiChar(Ord(Msg.Body.Text[l]));
            Memo1.Lines.Add(String(Body));
 
          end;
      finally
        Msg.Free;
      end;
      POP3.Disconnect;
    finally
      SSL.Free;
    end;
  finally
    POP3.Free;
  end;
end;

Za ten post autor banita otrzymał podziękowanie od:
Darek_C++
Avatar użytkownika
banita
Kreacjusz
Kreacjusz
 
Posty: 283
Dołączył(a): poniedziałek, 28 lipca 2008, 20:07
Podziękował : 1
Otrzymał podziękowań: 18
System operacyjny: Windows 7 Professional
Kompilator: C++Builder 2010 Update 5,
Delphi 2010 Update 5,
NetBeans 6.9(MinGw + Qt),
Visual Studio 2008 + Qt
Gadu Gadu: 0
    NieznanyNieznana

Re: Wysyłanie poczty SMPT z wymogiem SSL

Nowy postprzez Darek_C++ » sobota, 31 października 2009, 16:20

Wielkie dzięki banita, Twoja odpowiedz okazała się w 100% pomocna.
Dla zainteresowanych dodam, że idzie utworzyć DLL z funkcjami zawartymi w Indy mp właśnie wy wysyłania emaila :)
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    NieznanyNieznana


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Aplikacje sieciowe

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 0 gości