Tipy a triky v Delphi, díl 86.

I v dnešním díle si budeme povídat o Outlooku. Naučíme se načíst strukturu složek a ukážeme si jak odeslat poštu.
Nejprve začneme načtením struktury složek v aplikaci Outlook. Jedná se o klasický strom, kde v případě Outlooku, na rozdíl od běžných programů sloužících pouze k odesílání pošty, naleznete také všechny ostatní složky jako jsou úkoly a podobně.

Celou tuto strukturu se tedy naučíme načíst a kam jinam než do komponenty TreeView. Zřejmě asi už nemusím připomínat, že opět využijeme technologie OLE a bude potřeba jednotka ComObj. Připravte si na formulář komponentu TreeView a tlačítko, kterým bude celá funkce aktivována.

procedure RetrieveOutlookFolders(tvFolders: TTreeView);
  procedure LoadFolder(ParentNode: TTreeNode; Folder: OleVariant);
  var
    i: Integer;
    Node: TTreeNode;
  begin
    for i := 1 to Folder.Count do
    begin
      Node := tvFolders.Items.AddChild(ParentNode, Folder.Item[i].Name);
      LoadFolder(Node, Folder.Item[i].Folders);
    end;
  end;
var
  Outlook, NameSpace: OLEVariant;
begin
  try
    Outlook := CreateOleObject(`Outlook.Application`);
    NameSpace := outlook.GetNameSpace(`MAPI`);
    LoadFolder(nil, NameSpace.Folders);
  finally
    outlook := Unassigned;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  RetrieveOutlookFolders(TreeView1);
end;

Jak vidíte, funkce má jeden jediný parametr, kterým je příslušný TreeView, do které bude struktura načtena.

A dostáváme se k druhému dnešnímu tématu. Když už jsme si minule ukázali, jak získat seznam kontaktů, jistě se bude hodit i funkce na samotné odesílání pošty. Emailová zpráva bude obsahovat všechny hlavní náležitosti, na které jste zvyklí, a rovněž si zkusíme připojit soubor jako přílohu.

procedure TForm1.Button2Click(Sender: TObject);
const
  olMailItem = 0;
  olByValue = 1;
var
  OutlookApp, MailItem, MyAttachments: OLEVariant;
begin
  try
    OutlookApp := GetActiveOleObject(`Outlook.Application`);
  except
    OutlookApp := CreateOleObject(`Outlook.Application`);
  end;
  try
    MailItem := OutlookApp.CreateItem(olMailItem);
    MailItem.Recipients.Add(`adresat@email.cz`);
    MailItem.Subject := `Subjekt`;
    MailItem.Body := `Text emailu`;
    myAttachments := MailItem.Attachments;
    myAttachments.Add(`C:\Test.txt`, olByValue, 1, `Nazev prilohy`);
    MailItem.Send;
  finally
    myAttachments := VarNull;
    OutlookApp := VarNull;
  end;
end;

Vytvořená zpráva se přesune do složky Outbox a bude případně hned odeslána. Spojíte-li šikovně tento příklad s načítáním kontaktů z minulého dílu, není problém ani hromadné rozesílání pošty včetně konkrétního osobního oslovení dotyčného adresáta namísto nějakého obecného úvodu.

Diskuze (8) Další článek: IPEX nabízí řešení pro nefunkční FTP na ADSL

Témata článku: Software, Programování, Trik, Díl


Určitě si přečtěte

Photolemur 3: Prostě do něj přetáhnete fotky a začne se dít magie. Tedy údajně...

Photolemur 3: Prostě do něj přetáhnete fotky a začne se dít magie. Tedy údajně...

** Je lepší nabušený Photoshop, nebo program s jedním tlačítkem? ** Photolemur si myslí to druhé ** Tento fotoeditor neumí skoro nic, a přitom (skoro) všechno

Jakub Čížek | 19

Praktické vychytávky, které si chcete doinstalovat do Windows

Praktické vychytávky, které si chcete doinstalovat do Windows

** Pokud vás nudí vzhled nabídky Start, snadno jej můžete změnit. ** Stejně tak existují programy na přidání záložek do programů. ** Spokojit se ani nemusíte se základním ovládáním hlasitosti.

Vladislav Kluska | 45

Američtí mariňáci si tisknou kasárna z betonu na 3D tiskárně

Američtí mariňáci si tisknou kasárna z betonu na 3D tiskárně

** Americká námořní pěchota nedávno představila 3D tištěná kasárna pro vojáky ** Ty jim tiskne velká 3D tiskárna na beton ** Výsledkem je solidní obytný prostor, který je slušně chráněný před nepřátelskou palbou

Stanislav Mihulka | 18

Nová americká jaderná puma změní strategii boje

Nová americká jaderná puma změní strategii boje

** Bombardér Northrop Grumman B-2 Spirit amerického letectva nedávno svrhl jadernou pumu ** Šlo o test nové varianty pumy B61-12 ** Ta by měla mít hlavice schopné explodovat se silou 0,3 až 50 kilotun

Stanislav Mihulka | 63

PortraitPro: Vyzkoušeli jsme program, který prý udělá z každé „žáby“ krasavici

PortraitPro: Vyzkoušeli jsme program, který prý udělá z každé „žáby“ krasavici

** V digitálním světě nemůžete věřit všemu ** Nová generace 3D fotoeditorů zvládne divy ** Vyzkoušeli jsme PortraitPro, který vám změní i kontaktní čočky

Jakub Čížek | 10

Alza si za osobní odběr účtuje už 45 Kč. Když zaplatíte předem, dostanete slevu

Alza si za osobní odběr účtuje už 45 Kč. Když zaplatíte předem, dostanete slevu

** Osobní odběr v Alze vyjde na 45 Kč ** Když zaplatíte kartou předem, dostanete slevu 30 Kč ** Většina ostatních e-shopů poplatek za osobní odběr nevede

David Polesný | 171


Aktuální číslo časopisu Computer

Jak vytvořit a spravovat vlastní web

Velký test herních klávesnic a DVB-T2 tunerů

Vše o formátu RAW

Vybíráme nejlepší základní desku