Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi David, DVAPI32.dll, neue email erstellen (https://www.delphipraxis.net/171963-david-dvapi32-dll-neue-email-erstellen.html)

delphigeorge 4. Dez 2012 15:43

David, DVAPI32.dll, neue email erstellen
 
.... in den VBA-Beispeilen sieht das alles so einfach aus.

2 Fragen zu dem Code:

1. wie komme ich an die Recno der neu erstellten email ( in meinem Beispiel immer -1 )?
2. stimmt der Aufruf DVWin32.EXE ( IntToStr(TobitArchiv.ID) bringt Schutzverletzung )?

Delphi-Quellcode:
         TobitApp:= CreateOleObject('DVOBJAPILIB.DvISEAPI');
         TobitAcc:= IDispatch(TobitApp.LogOn) as Account;
         TobitArchiv := TobitAcc.GetSpecialArchive(DvArchivePersonalOut);
         oMailItem := IDispatch(TobitArchiv.NewItem(DvEMailItem)) as MailItem;
         oMailItem.Subject := edbetreff.Text;
         oMailItem.Options.UserHold := False;
         for i := 0 to lbBCC.Items.count -1 do
         begin
           oMailItem.Recipients.Add(lbBCC.Items[i],'MAIL', '');
         end;
         oMailItem.Save(TobitArchiv, DvMsgSelEMail);
->        Recno := VarToStr(oMailItem._ID);
         with TRegistry.Create do
         try
          RootKey := HKEY_CURRENT_USER;
          if OpenKey('\Software\Tobit\Tobit InfoCenter\Settings', false) then
            Tobitpath := Readstring('ProgramDirectory')
          else
            Tobitpath := '';
         finally
           Closekey;
         end;
         if TobitPath <> '' then
         begin
->          TobitStart := TobitPath + '\DVWIN32.EXE ' + IntToStr(TobitArchiv.ID) + ' /POS= ' + IntToStr(Recno) + ' /SA=34';
           ShellExecute(Handle, 'open', PChar(ExtractFileName(TobitStart)),'', PChar(ExtractFileDir(TobitStart)),SW_SHOW);
         end;

DonManfred 5. Dez 2012 05:59

AW: David, DVAPI32.dll, neue email erstellen
 
Die *._ID ist KEINE eindeutige ID. Du wirst nirgends eine eindeutige ID finden.
Die RecNo für den von Dir verwendeten Aufruf vom DavidClient ergibt sich, wenn Du den Archive-Ordner durchscannst und selber mitzählst. Ist die 10. Mail die von Dir erstellte dann ist RecNo = 9 (oder doch 10? Weiss es grad nicht auswendig).
Die RecNo ist der Index der Nachricht in der sie in der archive.dat vorkommt (binärformat).

Mir ging das komplizierte erstellen oder auslesen von Nachrichten mittels dvapi irgendwann auf den Sack und bin dazu übergegangen die Nachrichten ausschlieslich über den Filescan-Service zu erstellen.

Es ist hilfreich beim erstellen der Nachricht ein Benutzerdefiniertes "Field" einzubauen welches Du dann beim durchscannen des archive suchst um die korrekte RecNo (bzw. die von Dir erzeugte Nachricht eindeutig zu identifizieren) zu finden.

delphigeorge 5. Dez 2012 07:39

AW: David, DVAPI32.dll, neue email erstellen
 
hallo DonManfred,

hast du ein Beispiel wie man ein benutzerdefiniertes Feld definiert?

delphigeorge 5. Dez 2012 13:34

AW: David, DVAPI32.dll, neue email erstellen
 
Ich habe es selbst gelöst.
Danke für die Hilfe!


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz