Odesílání mailů přes SMTP v Indy

vložil [Z] 10. ledna 2011 21:39

V jednom minulém článku popsal Radek jak odeslat e-mail za pomocí Synapse.

Já dávám přednost Indy a proto zde připojuji jednoduchý návod jak Indy využít ke stejnému účelu.

Komponenty pro internetovou komunikaci Indy (zkratka Internet direct) jsou výchozí součástí Delphi už docela dlouho. Tento kód bude s minimálními úpravami funkční ve všech verzích Indy 10, o Indy 9 si nejsem úplně jistý.

Pro jistotu doporučuji používat nejnovější verzi Indy 10 (na stránkách indy.fulgan.com/ZIP/ si stáhněte balík Indy10_xxxx.zip, a případně návod instalace Indy a pozor! Je nutné odstranit všechny staré soubory v adresáři nainstalovaných Delphi.

Indy podporují také SSL. Ve starších verzí bylo zapotřebí používat upravené knihovny OpenSSL. V Indy 10 lze používat standardní sestavení (dostupné na http://indy.fulgan.com/SSL/).

Tyto knihovny je pak nutné nahrát nejlépe do složky s programem a přidat požadované náležitosti do kódu.

Zde je výsledný kód, který umožní přes SMTP odeslat HTML e-mail s alternativní částí s prostým textem.

uses
  // SMTP
  IdSMTP, IdMessage, IdMessageBuilder,

  // pro SSL
  IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack,
  IdSSL, IdSSLOpenSSL, IdExplicitTLSClientServerBase;

…….

var
  smtp: TIdSMTP;
  mess: TIdMessage;
begin
  smtp:=TIdSMTP.Create(nil);
  mess:=TIdMessage.Create(nil);
  try
    // vycistit
    mess.Clear;

    // FROM
    mess.From.Address := 'odesilatel@ja.cz';
    mess.From.Name := 'ode me';

    // TO
    with mess.Recipients.Add do begin
      Address := 'prijemce@on.cz';
      Name := 'prijemce';
    end;

    // ReplyTo
    with mess.ReplyTo.Add do begin
      Address := 'poslat@jinam.cz';
      Name := '…';
    end;

    // Subject
    mess.Subject := 'nazev';

    // pokud chceme poslat jen text
    //mess.Body.Text := 'text';

    // vytvoreni HTML zpravy, lze vyuzit i jiny TIdMessageBuilder 
    with TIdMessageBuilderHtml.Create do
      try
        // text
        PlainTextCharSet:='utf-8';
        PlainText.Text:='normalni text +ěščřžýáíé';

        // html
        HtmlCharSet:='utf-8';
        Html.Text:='<html><body><b>HTML text +ěščřžýáíé</b></body></html>';

        //priloha
        //Attachments.Add('c:\neco.dat');

        // predani
        FillMessage(mess);
      finally
        Free;
      end;

    mess.Encoding:=meMIME;

    smtp.MailAgent := 'agent';

    smtp.Host := 'smtp.server.cz';
    smtp.Port := 25;
    smtp.Username := '';
    smtp.Password := '';

    // SSL - je potreba nastavit IOHandler na TIdSSLIOHandlerSocketOpenSSL
    //smtp.AuthType:=satDefault;
    //smtp.UseTLS:=utNoTLSSupport;

    // připojeni
    smtp.Connect;
    // odeslani
    smtp.Send(mess);
    //odpojeni
    smtp.Disconnect;
  finally
    mess.Free;
    smtp.Free;
  end;
end;

Tagy: , , ,

Praxe

Komentování ukončeno

Naše nabídka

MVP
Ing. Radek Červinka - Embarcadero MVP
profil na linkedin, Twitter:@delphicz

Nabízím placené poradenství a konzultace v oblasti programování a vývoje SW.
Dále nabízíme i vývoj speciálního software na zakázku.

Neváhejte nás kontaktovat (i ohledně reklamy).

Delphi Certified Developer

O Delphi.cz

Delphi je jediný moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32, Win64, Mac OSX a na iPhone a Android.

Delphi.cz je nezávislý portál pro uživatele Delphi. Portál není koncipován pro úplné začátečníky, i když i ti se zde nebudou nudit, ale spíše na programátory, kteří již něco znají a chtějí své znalosti dále rozvíjet a sledovat novinky.

Poslední komentáře

Comment RSS