Email Vorlagen über VBA aus der dic.cfg

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Email Vorlagen über VBA aus der dic.cfg

      Hallo an alle,

      nachdem ich es erfolgreich geschafft habe, Emails über die DvAPI zu versenden habe ich mich an das auslesen des Templatepfads gemacht.
      Das hat auch alles funktioniert... solange der Pfad in der Registry stand. Nun habe ich es auf die dic.cfg umgeschrieben und siehe da es
      funktionierte auch auf mein Testrechner, aber auf den einzelnen Clients im livebetrieb ist in der jeweiligen dic.cfg meist ein Pfad eingetragen der so gar nicht existiert. Also stell ich mir die folgenden Fragen: ist der TemplateFN Pfad schon wieder umgezogen? Oder habe ich ein Denkfehler? Warum kann der Client eine neue Email mit Vorlage im Emailclient erstellen obwohl der Pfad in der dic.cfg nicht existiert?
      Ist das eine Anpassung im David oder muss ich den Pfad wo anders suchen?

      Ich hoffe ihr könnt mir Helfen denn mir gehen die Ideen aus :/

      [Edit]
      Version ist: DVWin32: 294.7615 DVAPI32: 294.0497
      Programiersprache: wie immer VBA

      Grüße
      Axel

      The post was edited 1 time, last by VNV_Nightmare ().

    • Hallo Axel,

      es gab vor einiger Zeit mal eine Anpassung dahingehend, dass man Vorlagen nun abhängig von den E-Mailadressen einstellen kann, siehe in den Einstellungen im Client. Es gibt also nicht mehr nur eine einzige Vorlage und somit auch nicht mehr nur einen Pfad.

      Daher ist es gut möglich, dass die Information mittlerweile woanders steht, sollte aber weiterhin irgendwo im Userverzeichnis sein. Details kenne ich aber auch nicht, sorry.

      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
      ----------------------------------
    • Nachtrag: Hab grad mal in die dic.cfg bei mir geschaut, da stehen die Vorlagen für jede Mailadresse drin.
      Es gibt TemplateFN aber auch mail@domain.tld-TemplateFN für die zweite Mailadresse.

      Wenn es keinen solchen Eintrag gibt, wurde vielleicht nie eine Vorlage eingestellt. Könnte mir vorstellen, dass in einem solchen "Default" Fall der Pfad zur Datei fest im Code steht, denn die Standardvorlage heißt mit dem Realname immer "i0000002".

      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,

      deine Arbeit ist wie immer unbezahlbar.
      Jetzt stellt sich mir nur noch die Frage ob halt "TemplateFN" überhaupt nicht mehr genutzt wird und sozusagen als Leiche noch in der dic.cfg gammelt, oder ob dies nun der Standard ist.
      Warum musste eigentlich die Registry weichen? Es würde mir soviel Zeit ersparen wenn der Pfad dort
      geblieben wäre. :/

      Naja ich werde wenn ich fertig bin mein Ergebnis mit euch teilen.


      Grüßt die Fische
      Axel
    • Hallo Axel,

      das hört man doch gern. :)

      Die Registry musste weichen, damit die Einstellungen auch PC übergreifend erhalte bleiben.

      Teste doch einfach mal mit einem neuen User und schau Dir eine ganz frische dic.cfg an.
      Ich vermute aber, dass es sich um den Standardeintrag handelt, da es für meine "erste" Adresse keinen zusätzlichen Eintrag gibt.

      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 an Alle,

      hier nun wie Versprochen das auslesen des Templatepfads über die dic.CFG
      ich habe versucht alle Möglichkeiten abzufangen. Wie immer ist alles in VBA.
      Wie immer ist alles im Latebinding. Vorab ein Copy - Paste wird bei niemanden Funktionieren
      und ist auch so nicht gewollt das es funktioniert. ;)
      Ich hoffe das Tobit nicht noch einmal auf die Idee kommt den Templatepfade anzurühren. ^^

      Brainfuck Source Code

      1. Public Function TobitInstalliert(RegRead As String) As Boolean
      2. On Error GoTo Err_End1
      3. Dim wsh As Object, str_olkey As String
      4. Set wsh = CreateObject("WScript.Shell")
      5. str_olkey = "HKEY_CURRENT_USER\Software\Tobit\Tobit InfoCenter\Settings\ProgramDirectory"
      6. '*** Registry auslesen und RegRead für weitere Verwendung füllen! ***
      7. If RegKeyExist(str_olkey) = 0 Then
      8. RegRead = wsh.RegRead(str_olkey)
      9. If FNz(RegRead, "") <> "" Then
      10. Set fs = CreateObject("Scripting.FileSystemObject")
      11. If fs.FolderExists(RegRead) Then
      12. TobitInstalliert = True
      13. End If
      14. End If
      15. End If
      16. Exit_End1:
      17. Exit Function
      18. Err_End1:
      19. Select Case ErrorHandler(""): Case Is = 5: Resume Next: Case Is = 4: Resume: End Select: Resume Exit_End1
      20. Resume
      21. End Function
      22. -------------------------------------------------------------------------
      23. Public Function TobitTemplateAuslesenCFG() As String()
      24. On Error GoTo Err_End1
      25. Dim str_CFGSuchAnfang As String, str_CFGSuchEnde As String, str_CFGSuchEmailAnfang As String
      26. Dim str_CFGSuchEmailEnde As String, str_CFGSuchStandard As String, str_CFGSelEmail As String, str_CFGSuchUndefiniert As String
      27. Dim str_CFGInhalt As String, int_CFGTemplateFNStart As Integer, int_CFGTemplateFNLaenge As Integer, str_TobitPath As String
      28. Dim str_TemplateFile() As String, str_Ausgabe() As String, i As Integer, j As Integer, int_CFGTemplateFNEMailStart As Integer, str_CFGPfad As String
      29. Dim obj_App As Object
      30. Dim obj_Account As Object
      31. Dim obj_UserArchive As Object
      32. '*** prüfen ob Tobit installiert und Rückgabe Pfad! ***
      33. If TobitInstalliert(str_TobitPath) = 0 Then Exit Function
      34. '*** erstellen der Objekte ***
      35. Set obj_App = CreateObject("DVOBJAPILib.DvISEAPI")
      36. Set obj_Account = obj_App.Logon("", "", "", "", "", "AUTH")
      37. Set obj_UserArchive = obj_Account.GetSpecialArchive(100) 'Konstante "100" gibt Persönliches Archiv das die dic.cfg beinhaltet an!
      38. str_CFGPfad = obj_UserArchive.ID & "\dic.cfg"
      39. str_CFGInhalt = Dateiöffnen(str_CFGPfad) 'öffnet die Datei und ließt diese als Binary ein
      40. str_CFGSuchAnfang = "TemplateFN" & Chr(0)
      41. str_CFGSuchEnde = Chr(0)
      42. str_CFGSuchEmailAnfang = Chr(33)
      43. str_CFGSuchEmailEnde = Chr(45)
      44. str_CFGSuchStandard = Chr(11)
      45. str_CFGSuchUndefiniert = Chr(12)
      46. i = 0
      47. Do While str_CFGInhalt <> ""
      48. int_CFGTemplateFNStart = InStr(str_CFGInhalt, str_CFGSuchAnfang) + Len(str_CFGSuchAnfang)
      49. If int_CFGTemplateFNStart < 1 Then Exit Function
      50. int_CFGTemplateFNLaenge = InStr(int_CFGTemplateFNStart, str_CFGInhalt, str_CFGSuchEnde) - int_CFGTemplateFNStart
      51. ReDim Preserve str_TemplateFile(2, i)
      52. str_CFGSelEmail = Right(Left(str_CFGInhalt, InStr(str_CFGInhalt, str_CFGSuchAnfang) - 1), 2)
      53. Select Case Right(str_CFGSelEmail, 1)
      54. Case str_CFGSuchStandard
      55. str_TemplateFile(0, i) = "Standard"
      56. Case str_CFGSuchEmailEnde
      57. Select Case Left(str_CFGSelEmail, 1)
      58. Case str_CFGSuchUndefiniert
      59. str_TemplateFile(0, i) = "Undefiniert"
      60. Case Else
      61. int_CFGTemplateFNEMailStart = InStrRev(Left(str_CFGInhalt, int_CFGTemplateFNStart), str_CFGSuchEmailAnfang) '
      62. str_TemplateFile(0, i) = Mid(str_CFGInhalt, int_CFGTemplateFNEMailStart + Len(str_CFGSuchEmailAnfang), int_CFGTemplateFNStart - (int_CFGTemplateFNEMailStart + Len(str_CFGSuchAnfang) + 1 + Len(str_CFGSuchEmailEnde)))
      63. End Select
      64. Case Else
      65. str_TemplateFile(0, i) = "Undefiniert"
      66. End Select
      67. str_TemplateFile(1, i) = Mid(str_CFGInhalt, int_CFGTemplateFNStart, int_CFGTemplateFNLaenge)
      68. If fs.FileExists(str_TemplateFile(1, i)) Then
      69. str_TemplateFile(2, i) = True
      70. Else
      71. str_TemplateFile(2, i) = False
      72. End If
      73. If InStr(int_CFGTemplateFNStart + int_CFGTemplateFNLaenge, str_CFGInhalt, str_CFGSuchAnfang) = 0 Then
      74. str_CFGInhalt = ""
      75. Else
      76. str_CFGInhalt = Right(str_CFGInhalt, Len(str_CFGInhalt) - int_CFGTemplateFNStart)
      77. End If
      78. i = i + 1
      79. Loop
      80. j = 0
      81. For i = 0 To UBound(str_TemplateFile, 2)
      82. If str_TemplateFile(2, i) = True Then
      83. ReDim Preserve str_Ausgabe(j)
      84. str_Ausgabe(j) = str_TemplateFile(1, i) & ";" & str_TemplateFile(0, i) & "; Tobit;"
      85. j = j + 1
      86. End If
      87. Next i
      88. TobitTemplateAuslesenCFG = str_Ausgabe
      89. Exit_End1:
      90. Exit Function
      91. Err_End1:
      92. Select Case ErrorHandler(""): Case Is = 5: Resume Next: Case Is = 4: Resume: End Select: Resume Exit_End1
      93. Resume
      94. End Function
      Display All
      Grüßt die Fische
      Axel
    • DvApi32.DavidAPIClass dvAPI = new DvApi32.DavidAPIClass();
      dvAPI.LoginOptions = DvLoginOptions.DvLoginForceAsyncDuplicate;
      Account oAcc = dvAPI.Logon(null, null, null, null, null, null);

      DvApi32.CacheManager oCacheMgr= new DvApi32.CacheManager();
      DvApi32.DavidUserSettings oUserSettings = oCacheMgr.GetUserSettingsCache(oAcc);

      // Lesen
      string sTemplateFN = oUserSettings .Registry.GetProfileString("TemplateFN");

      // Schreiben
      oUserSettings .Registry.WriteProfileString("TemplateFN", "\\\\<servername>\\david\\archive\\resource\\template\\i0000002.001");
      oUserSettings .Commit();
    • Hallo Youbird,

      wie bist Du auf diesen Code gekommen? In der Doku gibt es keine Einträge dazu.
      Wie im Verlauf erwähnt, stehen die Vorlagenpfade mittlerweile in der dic.cfg und ein User kann mehrere Vorlagen haben (abhängig von den zugewiesenen E-Mailadressen). Ich vermute der Code funktioniert dafür nicht, oder?

      Der Pfad der beim Schreiben angegeben ist, zeigt auf das globale Vorlagenverzeichnis, nicht auf das des Users. Man würde hier dem User also eine öffentliche Vorlage zuweisen.

      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 Sven,

      stimmt, in der Doku steht dazu nichts. An die Objekte bin ich via OLE/COM Viewer (Type Library) der DvApi32 gekommen. Dann durch ausprobieren...

      Ja, die Pfade stehen, wie Du bereits geschrieben hast in der dic.cfg, damit die Einstellungen auf Seiten des Servers und unabhängig vom benutzen PC getätigt werden können.

      Der Code war nur ein Beispiel für die Hauptadresse und der Pfad kann selbstverständlich auf andere Vorlagen angepasst werden. Um die Vorlagen für weitere Adressen einzustellen, benutzt man einfach als Key (TemplateFN) dieses Format: "<EMail>-TemplateFN". Selbstverständlich gilt das ebenfalls für folgende Keys:

      TemplateREPFOR
      TemplateQuote
      TemplateCalendar
      TemplateTask
      TemplateAddress

      Gruß
      Herbert