Pinned InfoCenter Com API

    • InfoCenter Com API

      Hi ich bin neu im Forum.



      Ich habe 3 Fragen

      1) gibt es für das InfoCenter d.h. der göffnete MailClient eine Com-Schnittstelle, die ich von C# aus bedienen kann.



      2) gibt es eine Möglichkeit ein Event zu registrieren, wenn der Benutzer die Mail versendet hat (und wie finde ich sie wieder)



      3) gibtg es eine Möglickeit den Mailclient um eigene Buttons, Menues zu erweitern und wie hinterlege ich den aufzurufenden Code



      Es wäre Super wenn andere dieses Problem schon gehabt und gelöst hätten.

      Für jeden tipp dankbar.

      Peter
    • Hallo Peter,

      zu 1.: Ja, die DvAPI. Findest Du im Downloadbereich Deines TSSM Accounts (Account der Lizenz).

      zu 2.: Nein, soweit mir bekannt nicht. Wie genau soll der Workflow werden den Du realisieren willst?
      Bei CRM oder ERP Anbindungen gibt es meist zwei Standardwege. Bei work ... for all! kann man z.B. per Rechtsklick aus David E-Mails zuordnen (so gehen die meisten Tools damit um) oder E-Mails direkt aus der work ... for all! E-Mail Maske versenden. Der Versand erfolgt mit entsprechender Einstellung dann über die API und damit über David. Die versendete E-Mail liegt also im CRM System und in David.
      Das schöne hieran ist, dass man mit entsprechender Programmierung auch die @@-Befehle (z.B. @@Warten, @@VCF, @@VON, etc.) und damit viele David eigene Features nutzen kann.

      zu 3.: Ja, mit Client Scripts die in David\Code\Scripts abgelegt werden. Sprache entweder Javascript oder VBS. In diesem Verzeichnis findest Du einige Beispiele und die Schnittstellenbeschreibung. Die Scripte werden im David Administrator in den Benutzereigenschaften unter Benutzerdaten hinterlegt, aktiviert und werden beim Clientstart geladen.

      Gruß Jens
      Es wäre schön, Deinen Vornamen zu kennen. Bitte beachte unsere Forenregeln und die Netiquette.

      ----------------------------------
      Jens Suing

      Tobit Software Authorized Partner *****
      Starface Advanced Partner
      work ... for all! Solution Partner
      bintec elmeg Certified Partner
      Kerio Partner
      ----------------------------------
      DIE Spezialisten - J.Suing
      www.schneller-und-besser.de
      DAS Portal: Faq, Forum
      ----------------------------------
      Support und Beratung unter
      02206-95100-0
      ----------------------------------
    • Hi

      Das ist ja schon mal was



      zu 1) mit der DvApi kann ich meines Wissens nicht mit dem Client kommunizieren, Also Client aufmachen eine Mail erzeugen und dann den Benutzer den Rest machen lassen



      Der Workflow sollte bei mir so aussehen



      a) Client wenn noch nicht geöffnet öffnen

      b) Ein paar Standarddaten an den Client übergeben (z.B. to, CC, BCC default subject ...)

      c) der User vervollständigt die mail mit body und Attachments

      d) Nach dem Versenden bekomme ich einen Zugriff auf die versendete Mail umd die Daten im CRM System abzulegen.



      Also genau wie Du es im Punkt 2 beschrieben hast



      zu 2) genau das suche ich, wo gibt es Besipiele dazu



      zu 3) So werde ich es machen und dann mittels eines VBSScripts meiner Applikation ein Event zusenden.



      Weiter Frage eines Neulings bei Tobit



      Was sind bitte @@-Befehle und wie und wo kann ich sie einsetzen ??



      Kannst Du mir zu Punkt 2 helfen.

      Gruß

      Peter
    • Hallo Peter,

      korrekt, die API kommuniziert nicht mit dem Client, sondern direkt mit dem David Server.

      Mittels des Client-Scripting kannst Du mit dem Client kommunizieren.

      Was ich in 2. beschrieben hatte war nicht ganz was Du suchst, sondern genau die andere Richtung. Also im CRM eine eigene E-Mailmaske programmieren, die dann nur die Daten beim Klick auf Senden an David oder Outlook abgibt.

      Du kannst den sog. TIC Befehl benutzen. Schau mal in diesem Beitrag: email erstellen und in InfoCenter zum Versenden anzeigen

      Problematisch ist aber die Rückmeldung, die erfolgt nicht. D.h. Du musst Dir die Nachricht irgendwie im Ausgang des Users suchen.

      Eine Alternative wäre, eine neue Nachricht zu erzeugen und zu speichern, diese dann per dvwin-Parameter (siehe unten oder KB Artikel Q-106.693) zu öffnen und die gespeicherte Nachricht im Ausgang zu löschen. Aber auch hier fehlt Dir die Rückmeldung oder die Referenz auf die versendete Nachricht.

      KnowledgeBase Q-106.693
      Aufrufparameter für das InfoCenter (DVWIN32.EXE)
      --------------------------

      Um Nachrichten in der Branchensoftware zu öffnen, können verschiedeneAufrufparameter für das InfoCenter (DVWIN32.EXE) genutzt werden. Mit Hilfe dieser Parameter können zum Beispiel eMails, der Kalender-Dialog oder der Kalender Wizard direkt aufgerufen werden.

      Folgende Parameter stehen zur Verfügung:

      Parameter Bedeutung
      <file> voll - qualifizierter Dateiname
      <path> lokaler Pfadname
      [PATH] Pfadname in Servernotation
      <n> Dezimalzahl
      <x> Hexadezimalzahl

      Genereller Aufbau für das Aufrufen von Einträgen aus dem Tobit Archive System:
      Syntax: DVWIN32.EXE [PATH] /POS=n /SA=n (+ weitere Modifier s.u.)

      POS = Position in Archive.DAT
      SA = Typ (9 = Job, 34 = Archive)

      Optionen:
      Syntax: DVWIN32.EXE /option

      Option Funktion Beispiel
      • /EML file EML Datei öffnen und darstellen DVWIN32 /EML C:\TEMP\PRICELIST.EML
      • /ICS file ICS Datei öffnen und darstellen DVWIN32 /ICS C:\TEMP\MEETING.ICS
      • /VCF file VCF Datei öffnen und darstellen DVWIN32 /VCF C:\TEMP\RSANDERS.VCF
      • /DFML file DFML Dokument öffnen und darstellen DVWIN32 /DFML \\Servername\david\archive\resource\forms\0\id1a9e7c.001
      • /001 file 001 Datei öffnen und darstellen (ohne Betreff, An etc.) DVWIN32 /001 C:\TEMP\MESSAGE.001
      • /IMG path n Image Messaging Drucker, Pfad und laufende Bild Nummer DVWIN32 /IMG C:\TEMP\ 3
        Die Grafiken IMG-001.JPGIMG-002.JPG IMG-003.JPG sollten im Verzeichnis C:\TEMP liegen
      • /API=n Faxware Drucker, Nummer des Druckjobs
        Ruft den "Nachrichten versenden" Dialog auf und verwendet die angegebene JobDatei DVWIN32 /API=123456789
        JobDatei "0195418B.JOB" und PCX-Grafik "0195418B.001" im Verzeichnis »DAVID\APPS\FAXWARE\OUT\API«. 0195418B ist hierbei der Hexadezimal Wert vomAufrufparameter "26558859".
      • /DOC Neues Dokument (ohne cc/bcc)
      • /CAL=x:y Neuer Kalendereintrag mit vorgeschlagenem Termin x,y sind hierbei Start- und Stoppzeit in Millisekunden (Hexadezimalwert) seit dem 1.1.1970
      • /ADDRESS Addressdialog
      • /HWND Fenster der aufrufenden Applikation
      • /W Kalender Wizard
      • /FROM=file Template für neue Nachricht
      • /VCARD User VCard darstellen
      • /Options Settings-Dialog darstellen
      • /M Modal zu HWND
      • -A öffnen eines Archives -A\\Server\david\archive\user\10004000\in

      Modifier:

      • /F Forward Mail
      • /R Reply Mail
      • /A Reply to All
      • /D Drag&Drop in Kalender Archive
      • /I Received Status der Mail ignorieren (In Bearbeitenmodus öffnen)
      • /X Eintrag als Attachment an neue Nachricht anhängen
      • /Y In Kalender speichern
      • /S Dialog »Erneut Versenden« für diesen Eintrag

      Beispiel:

      Forwarden eines Eintrages:
      DVWIN32.EXE \\SERVER\DAVID\ARCHIVE\USER\10004000\IN /POS=103 /SA=34 /F

      Aber wie oben gesagt, eine Möglichkeit ist auch, das Ganze mit einer eigenen E-Mailmaske in Deinem CRM zu lösen und die Daten dann an die entsprechenden Programme zu übergeben.


      David Befehle
      Aus der David Hilfe (Im Client F1, dann im Inhalt auf "David Befehle")
      David unterstützt eine Vielzahl von Kommandos, so genannte »David Befehle«, mit denen der Anwender das Layout von Nachrichten und deren Versand beeinflussen kann. Der wohl wichtigste dieser Befehle dient der Angabe der Zieladresse (z.B. Faxnummer oder eMail-Adresse). Weiterhin können Sie mit David Befehlen beispielsweise den Versandtermin festlegen, das optische Layout bei Faxaufträgen regeln oder Rundsendungen erstellen.

      David Befehle können direkt innerhalb des Nachrichtentextes von Sendeaufträgen verwendet werden. Sie sind hierbei durch eine so genannte »Befehls-ID« zu kennzeichnen. Üblicherweise besteht diese Befehls-ID aus zwei direkt aufeinanderfolgenden @-Zeichen. (...)
      Bsp. @@WARTEN@@ / @@WRT@@
      Wenn man den Text @@WARTEN@@ in eine Nachricht schreibt, dann wird dieser Text beim Versenden vom David Service Layer ausgewertet und aus dem Nachrichtentext entfernt. Der Befehl selbst hat zur Folge, dass die Nachricht im Wartezustand (nur bei externen Nachrichten möglich) in das Versandbuch gestellt wird.

      Die schließenden @@-Zeichen werden nur dann benötigt, wenn man mehrere Befehle in eine Zeile schreiben will. Man sollte aber versuchen diese möglichst immer zu verwenden um Fehlern vorzubeugen.


      In der Hilfe (F1 im Client) findest Du alles was Du brauchst. Es gibt allerdings noch mehr David @@-Befehle die nicht dokumentiert sind. Manche davon findet man in der KnowledgeBase. Interessante Artikel zu dem Thema sind noch Q-109.646 und Q-109.131.

      Bei Verwendung der API ist darauf zu achten, dass die @@-Befehle bei Plaintextnachrichten durchgereicht werden, ich kann diese also in meinem Programm im Text verwenden und der Service Layer führt Sie dann bei Verarbeitung aus. Anders ist es mit HTML Mails die man über die API versendet. Hierbei gehen die @@-Befehle verloren, bzw. werden nicht beachtet.
      In der API selbst gibt es aber das "MessageOptions" Objekt, mit dem man die entsprechenden Befehle übergeben kann (für HTML- und Plaintext Nachrichten).


      Weitere interessante Ressourcen

      Q-106.236 - Variablen im Nachrichteneditor
      Q-103.503 - Nutzung von Variablen im Tobit InfoCenter PC mit "if-then-else" Funktionen
      Q-103.076 - Adressbuch-Variablen

      Q-105.207 - Verschachtelte DvISE Befehle und Variablen verwenden
      Q-101.196 - Variablen für den DvISE-Server und für das Tobit InfoCenter

      Q-103.045 - Variablen für die Verteilung empfangener Nachrichten
      Q-106.499 - Erweiterte Variablen für die Verteilung
      Q-106.583 - Einsatz von Variablen mit Verteilregeln


      Gruß Jens
      Es wäre schön, Deinen Vornamen zu kennen. Bitte beachte unsere Forenregeln und die Netiquette.

      ----------------------------------
      Jens Suing

      Tobit Software Authorized Partner *****
      Starface Advanced Partner
      work ... for all! Solution Partner
      bintec elmeg Certified Partner
      Kerio Partner
      ----------------------------------
      DIE Spezialisten - J.Suing
      www.schneller-und-besser.de
      DAS Portal: Faq, Forum
      ----------------------------------
      Support und Beratung unter
      02206-95100-0
      ----------------------------------
    • Tip zu Taskreminder

      Noch ein kleiner Tip am Rande. Falls Du mit Taskobjekten arbeitest (Aufgaben) und den Reminder verwendest, benutze als Zeitangabe den Unix-TimeStamp. In der Hilfe steht Minuten in Integer, das stimmt aber nicht. Dies trifft nur für den Reminder von Terminen zu.

      Gruß Jens
      Es wäre schön, Deinen Vornamen zu kennen. Bitte beachte unsere Forenregeln und die Netiquette.

      ----------------------------------
      Jens Suing

      Tobit Software Authorized Partner *****
      Starface Advanced Partner
      work ... for all! Solution Partner
      bintec elmeg Certified Partner
      Kerio Partner
      ----------------------------------
      DIE Spezialisten - J.Suing
      www.schneller-und-besser.de
      DAS Portal: Faq, Forum
      ----------------------------------
      Support und Beratung unter
      02206-95100-0
      ----------------------------------
    • Hallo Jens

      Danke für die vielen Tipps



      Das senden von Emails über TIC erscheint mir für meine Aufgabe nicht ausreichend da

      1) Die Möglichkeit einer BCC Angabe fehlt

      2) Wie ist den das, wenn ich sehr viele Adressen habe an die versendet werden soll z.B. > 3000 ich denke das schafft die Schnittstelle nicht. Es handelt sich da ja wohl um die normale mailto Schnittstelle

      Ein schönes Beispiele ist unter david-forum.de/index.php?page=Thread&threadID=5815

      Call TobitVersand

      3) Das Suchen der gesendeten Mail wird bei andern EmailProgrammen i.a. so gemacht, das der Email ein eigenes Attribut hinzugefügt wird. Der Wert des Attributs dient dann dem CRM System um die Mail wieder im Ausgangspostfach zu finden. das geht über diese Schnittstelle auch nicht.



      Was denkst Du über folgende Idee



      Ein Clientscript zu schreiben, das auf Events vom CRM wartet. Irgendwo habe ich gelesen, das Eventhandling möglich ist, ich weis aber nicht wie vom CRM an VBS Events gesendet werden.

      Diesem Script werden dann alle notwendigen Daten mittels events übergeben und global da gespeichert.

      Wird dann vom CRM ein Event (z.B. Display) geschickt wird die Mail aufgebaut und angezeigt. Gleichzeitig wird ein Eventhandler registriert der aufgerufen wird, wenn die Email versendet wurde.

      Danach wird über eine Com-Schnittstelle dem CRM mitgeteilt,dass die Mail versendet wurde.

      Wäre das ein gangbarer Weg.

      Danke für deine Hilfe

      Gruß

      Peter
    • Hallo Peter,

      zu 2.: Nicht getestet, sry.

      Das ganze ist keine MAPI Schnittstelle (mailto). Die gibt es natürlich auch, bzw. nur die Simple Mapi, darüber kannst Du auch arbeiten.
      Über den TIC Befehl kannst Du aber z.B. auch Vorlagen und ähnliches übergeben oder direkt zu einem bestimmten Ordner springen.

      zu 3.: Mit der Variante die ich ebenfalls schon erwähnte (Nachricht über API erzeugen, speichern, per dvwin32.exe Parameter öffnen, löschen) könntest Du ein Userfield oder eine Property schreiben. Allerdings musst Du zum wiederfinden dann das gesamte Ausgangsverzeichnis in einer Schleife durchlaufen, da Du nicht direkt nach der Property oder dem Userfield suchen kannst.


      Ob Dein Lösungsansatz über Scripting und API klappen wird weiß ich nicht, ich glaube aber fast nicht. Das Scripting nutzen wir in der Regel nur um Anwendungen zu starten und dahin entsprechende Daten zu übergeben. Ich kann mir nicht vorstellen, dass man auf einen externen Event horchen kann.
      Events die es dort gibt haben immer mit dem Client selbst zu tun, also z.B. eine Aktion nach dem Klick auf Senden ausführen. Das könntest Du natürlich nutzen, allerdings greift das dann bei jeder Mail...

      Wie gesagt, genau kann ich es Dir nicht sagen, da ich diesen Weg bisher nicht gegangen bin.


      Aber was spricht denn gegen eine eigene E-Mailmaske im CRM? Ich behaupte mal, dass dies für Deine Anforderung der beste Weg wäre. Hört sich zunächst mal nach mehr Aufwand an, aber letztlich wird das vermutlich schneller gehen, wie das rumgeochse mit den verschiedenen Schnittstellen. ;)

      Gruß Jens
      Es wäre schön, Deinen Vornamen zu kennen. Bitte beachte unsere Forenregeln und die Netiquette.

      ----------------------------------
      Jens Suing

      Tobit Software Authorized Partner *****
      Starface Advanced Partner
      work ... for all! Solution Partner
      bintec elmeg Certified Partner
      Kerio Partner
      ----------------------------------
      DIE Spezialisten - J.Suing
      www.schneller-und-besser.de
      DAS Portal: Faq, Forum
      ----------------------------------
      Support und Beratung unter
      02206-95100-0
      ----------------------------------
    • Hallo Jens



      Gegen eine eigene Mailmaske spricht, dass wir Kunden haben die Tobit zum Mail versenden benutzen.

      Da ist es nicht zumutbar, wenn Mails über das CRM versendet werden, eine andere Mailmaske verwendet wird.

      Außerdem müssten ja dann die Logindaten des Benutzers im CRM hinterlegt werden, damit der Account dann auch richtig ist.

      Diesen Weg kann ich also nicht gehen.



      Derzeit versuche ich es mit folgendem Code (Word.Application dient nur als Testobjekt und wird durch die Comm-Schnittstelle zum CRM ersetzt)



      Source Code

      1. Sub OnWord(oInfoCenter, oContext)
      2. On Error resume next
      3. Set objWord = getobject(,"Word.Application") if err.number<>0 then
      4. oInfoCenter.Msgbox("Create Word")
      5. Set objWord = createobject("Word.Application")
      6. err.clear
      7. end if
      8. WScript.ConnectObject objWord, "wd_" ' dies soll bewirken, dass bei auftretenden Events in Word die Routinen wd_... gerufen werden
      9. if err.number<>0 then
      10. errtxt = "ERROR: " + err.description
      11. oInfoCenter.Msgbox(errtxt) ' leider tritt immer ein Error Text Objekt erforderlich
      12. err.clear
      13. end if
      14. end Sub
      15. 'Eventroutine die gerufen werden soll, wenn sich der Dokumenteninhalt ändert
      16. Sub wd_DocumentChange
      17. MsgBox "The current document has been changed."
      18. End Sub
      Display All



      Kannst Du den Code kommentieren ??


      Gruß

      Peter

      Edit: Beispielcode in entsprechende Tags gesetzt

      The post was edited 2 times, last by Teardrop ().

    • Hallo Peter,

      ich habe Deinen Beispielcode zur besseren Lesbarkeit mal in Code-Tags gesetzt. Benutze beim Einfügen von Beispielcode bitte den #-Button des Editors hier im Forum.

      Aus eigener Erfahung kann ich sagen, dass die Verwendung einer eigenen E-Mailmaske keineswegs unzumutbar ist. Im Gegenteil, dadurch kann der Workflow sogar verbessert werden. Wir selbst nutzen work ... for all! welches wir auch vertreiben und hier ist es genauso gelöst. Bisher hatte kein Kunde damit ein Problem.

      Anmeldedaten gibt man bei der API in der Regel nicht an. Startet man die Connection mit leeren Parametern, werden die der aktuellen Verbindung genommen, also mein Username und Passwort (die auf Windows basieren) und der "Current Server" aus der Registry, also der zuletzt verbundene Server:

      Source Code

      1. // Codebeispiel zum API Aufruf mit Setzen des pers. Ausgans als Archive-Objekt
      2. using DvAPI32;
      3. ...
      4. DvApi32.DavidAPIClass oApp;
      5. DvApi32.Account oAcc;
      6. DvApi32.Archive oArchive;
      7. oApp = new DavidAPIClass();
      8. oApp.LoginOptions = DvLoginOptions.DvLoginForceAsyncDuplicate;
      9. oAcc = oApp.Logon("", "", "", "", "", "NOAUTH");
      10. oArchive = oAcc.GetSpecialArchive(DvArchiveTypes.DvArchivePersonalOut);
      Display All


      Zu Deinem Beispiel kann ich nicht viel sagen. Ich mache fast nichts in VB, nur C# und JS.

      oInfoCenter.Msgbox(errtxt) ' leider tritt immer ein Error Text Objekt erforderlich
      Handelt es sich bei errtxt.description wirklich um Text? Oder musst Du zunächst in eine String konvertieren?
      Das würde zumindest die Meldung erklären.

      Gruß Jens
      Es wäre schön, Deinen Vornamen zu kennen. Bitte beachte unsere Forenregeln und die Netiquette.

      ----------------------------------
      Jens Suing

      Tobit Software Authorized Partner *****
      Starface Advanced Partner
      work ... for all! Solution Partner
      bintec elmeg Certified Partner
      Kerio Partner
      ----------------------------------
      DIE Spezialisten - J.Suing
      www.schneller-und-besser.de
      DAS Portal: Faq, Forum
      ----------------------------------
      Support und Beratung unter
      02206-95100-0
      ----------------------------------
    • Hallo Jens,



      Das mit dem Code einfügen kannte ich nicht sorry.



      Der Code mit err.descriptipon stimmt schon. Ich habe es in anderer Umgebung ausprobiert.

      Meine einzige Erklärung ist, dass es im VBS von Tobit das Object



      WScript



      nicht gibt. Stimmt das??



      Googeln hat auch bei anderen Produkten schon gebracht, dass dessen VBS-Engine das Object WScript nicht kennt.

      Ich werde noch weiter bohren.

      Vielleicht ist ja auch die mailitem.Save Methode statt mailItem.Send aus DvApi eine Möglichkeit dem Benutzer die Regie zu übergeben.

      Wenn ich eine Lösung gefunden habe poste ich sie auf alle Fälle.

      Vielen Dank für Deine Hillfe und Tipps

      Gruß

      Peter
    • Hallo Peter,

      Peterle wrote:

      Meine einzige Erklärung ist, dass es im VBS von Tobit das Object

      WScript

      nicht gibt. Stimmt das??

      möglich ist das, kann ich aber nicht wirklich beantworten.


      Peterle wrote:

      Vielleicht ist ja auch die mailitem.Save Methode statt mailItem.Send aus DvApi eine Möglichkeit dem Benutzer die Regie zu übergeben.

      Geht auch, aber auch die hat den ein oder anderen Nachteil. Denn wenn der User auf Senden klickt, wird ein neues Item im Ausgang erzeugt, und das hat natürlich Deine Property nicht...

      Gruß Jens
      Es wäre schön, Deinen Vornamen zu kennen. Bitte beachte unsere Forenregeln und die Netiquette.

      ----------------------------------
      Jens Suing

      Tobit Software Authorized Partner *****
      Starface Advanced Partner
      work ... for all! Solution Partner
      bintec elmeg Certified Partner
      Kerio Partner
      ----------------------------------
      DIE Spezialisten - J.Suing
      www.schneller-und-besser.de
      DAS Portal: Faq, Forum
      ----------------------------------
      Support und Beratung unter
      02206-95100-0
      ----------------------------------
    • Hi

      ich melde mich nochmals. Wie ist das mit den Userfields. Ich habe versucht eines zu erzeugen. Bekomme aber einen Absturz, wenn ich darauf zugreifen will. Mein c# code sieht so aus


      Source Code

      1. DvApi32.Fields oFields = mailItem.Fields; // Dies ist meine Mail die ich zuvor abgespeichert habe
      2. DvApi32.UserFields oUserFields = oFields.UserFields; // ERROR!!! Beim Aufruf einer COM-Komponente wurde ein HRESULT E_FAIL-Fehler zurückgegeben.
      3. DvApi32.FieldDefinition oFielddef = oUserFields.CreateDefinition("myField", DvApi32.DvFieldType.DvFieldText);
      4. oUserFields.Add(oFielddef , "myValue");


      Gruß

      Peter

      The post was edited 2 times, last by Peterle ().

    • Klappt das so mit dem code



      Source Code

      1. DvApi32.Fields oFields = mailItem.Fields;
      2. DvApi32.UserFields oUserFields = oFields.UserFields; // ERROR!!! Beim Aufruf einer COM-Komponente wurde ein HRESULT E_FAIL-Fehler zurückgegeben.
      3. DvApi32.FieldDefinition oFielddef = oUserFields.CreateDefinition("myField", DvApi32.DvFieldType.DvFieldText);
      4. oUserFields.Add(oFielddef , "myValue");


      Gruß Peter
    • Hallo Peter,

      der Code ist beide male der Gleiche, oder?

      Peterle wrote:

      Klappt das so mit dem code
      Vermutlich nicht, da Du ja ein Kommentar mit nem Error dran geschrieben hast. ;)

      Ich denke das Problem ist, dass Du ein neues Item erzeugst. Du kannst aber das Userfield anscheinend nur auf bereits existierende Items anwenden. Du musst also vorher speichern, was dann aber wieder dazu führt, dass Du nicht weißt, wie Du den Eintrag findest.

      Wie erwähnt nutze ich immer SetProperty und nicht die Userfields. Habe das Ganze aber gerade mal getestet (ich hoffe Du weißt den Einsatz zu schätzen, meine Amazon Wunschliste ist lang ;) ). Beim Userfield kommt bei mir der gleiche Fehler sofern es ein neues Item ist, mit bereits existierenden Items geht es.

      Mit SetProperty geht es auch mit neu erzeugten MessageItem2.


      Source Code

      1. oMessageItem2 = oArchive.CreateArchiveEntry(DvItemTypes.DvEMailItem);
      2. oMessageItem2.Subject = "Test";
      3. oMessageItem2.SetProperty(4190, "Test");
      4. oMessageItem2.Save();



      Wenn Du die .0tx des zugehörigen Eintrags im Editor öffnest, wirst Du Deine Property darin finden.

      Übrigens ist das MessageItem2 auch um ca. Faktor 10 :!: schneller als MessageItem und seine abgeleiteten Objekte (MailItem, etc.).
      Daher versuche ich immer soviel wie möglich über MessageItem2 zu realiseren und caste nur in speziellen Fällen in die entsprechenden Objekttypen. Da man nicht direkt von MessageItem2 zu MessageItem casten kann, muss man einen Umweg gehen, indem man die ID des MessageItem ausliest und damit das MessageItem2 erzeugt (öffnet).

      Gruß Jens
      Es wäre schön, Deinen Vornamen zu kennen. Bitte beachte unsere Forenregeln und die Netiquette.

      ----------------------------------
      Jens Suing

      Tobit Software Authorized Partner *****
      Starface Advanced Partner
      work ... for all! Solution Partner
      bintec elmeg Certified Partner
      Kerio Partner
      ----------------------------------
      DIE Spezialisten - J.Suing
      www.schneller-und-besser.de
      DAS Portal: Faq, Forum
      ----------------------------------
      Support und Beratung unter
      02206-95100-0
      ----------------------------------
    • Hallo Jens



      Vielen dank für Deine vielen Tipps und Hinweise.

      Ich denke aber trotzdem, dass wir das Projekt Tobit an CRM anschliessen fallen lassen müssen.



      Folgende Punkte sprechen dagegegen



      1) Der Tobit Client lässt sich nbicht genügend fernsteuern (z.B. Mail vorkonfigurieren mit DvApi , danach im Tobit Client anzeigen)

      2) Die Userfields, bzw Propertys gehen beim senden einer Mail (d.h. nach Übergang ins Ausgangspostfach) verloren. Damit ist eine Mail nicht mehr identifizierbar und man kann nicht feststellen was wirklich gesendet wurde (Subject, Body, Attachments)



      Schade.

      Trotzdem Danke für Deinen Einsatz

      Gruß

      Peter
    • Hallo Peter,

      Peterle wrote:

      Die Userfields, bzw Propertys gehen beim senden einer Mail (d.h. nach Übergang ins Ausgangspostfach) verloren.

      das stimmt so nicht. Arbeitest Du mit dem MessageItem2 und SetProperty findet man diese auch in der 0tx der versendeten E-Mail. Die Property steht also auch nach dem Versand zur Verfügung.

      Gruß Jens
      Es wäre schön, Deinen Vornamen zu kennen. Bitte beachte unsere Forenregeln und die Netiquette.

      ----------------------------------
      Jens Suing

      Tobit Software Authorized Partner *****
      Starface Advanced Partner
      work ... for all! Solution Partner
      bintec elmeg Certified Partner
      Kerio Partner
      ----------------------------------
      DIE Spezialisten - J.Suing
      www.schneller-und-besser.de
      DAS Portal: Faq, Forum
      ----------------------------------
      Support und Beratung unter
      02206-95100-0
      ----------------------------------