Hallo an alle,
ich habe die Aufgabe bekommen eine Schnittstelle zwischen David und unseren Programm zu schreiben. Die Schnittstelle ist auch soweit fertig, nur gibt es noch ein paar kleine Probleme.
Hier erst mal die Grundinfos:
Programmiersprache: VBA (Access)
DVAPI32: 12.00a 0437
Latebinding: JA
Public Function EMail_VersendenTobit(EMailAdresse, BetreffTxt As String, EMailText As String, Optional SofortSendenOderAnzeigen As Integer, Optional davidAppl, Optional AttachmentsPathsLöschen As Boolean) As Boolean
On Error GoTo Err_End1
'*** für das Verständnis noch die dvapi32 Typen ***
'Dim obj_App As DvApi32.IApplication
'Dim obj_Account As DvApi32.Account
'Dim obj_Archive As DvApi32.Archive
'Dim obj_MailItem As DvApi32.MessageItem2
'Dim oAttachment As DvApi32.Attachment
Dim I As Integer
Dim obj_App As Object
Dim obj_Account As Object
Dim obj_Archive As Object
Dim obj_MailItem As Object
Dim str_RecNo As String
Dim obj_WshShell As Object
Dim str_ShellCmd As String
Dim str_TobitPath As String
Dim str_TobitSvr As String
Dim str_Template As String
Dim str_Templatefn As String
'*** erstellen der Objekte ***
Set obj_App = CreateObject("DVOBJAPILib.DvISEAPI")
Set obj_Account = obj_App.Logon("", "", "", "", "", "AUTH")
Set obj_Archive = obj_Account.GetSpecialArchive(102) 'Konstante "102" gibt Ausgangsarchiv an!
Set obj_MailItem = obj_Archive.CreateArchiveEntry(2) 'Konstante "2" steht für Email!
'*** Tobit Servername auslesen ***
str_TobitSvr = obj_Account.ServerName
'*** Vorlagenverzeichnis einlesen ***
Set obj_WshShell = CreateObject("WScript.Shell")
str_ShellCmd = "HKCU\Software\Tobit\Tobit InfoCenter\Servers\" & str_TobitSvr & "\TemplateFN"
str_Template = obj_WshShell.RegRead(str_ShellCmd)
str_Templatefn = Right(str_Template, (Len(str_Template) - InStrRev(str_Template, "\")))
'*** Erststellen der Email ***
With obj_MailItem
.Fields("SRTo").Value = FNz(EMailAdresse, "")
'*** CC und BCC benötigen 2 dimensionale Arrays als Übergabe! ***
' .Fields("Cc").Value = FNz(EMailAdresse_CC, "")
' .Fields("BCc").Value = FNz(EMailAdresse_BCC, "")
.Subject = ""
.Fields("CONTENT").Value = FNz(EMailText, "")
.Fields("Subject").Value = FNz(BetreffTxt, "")
.Fields("Priority").Value = 0
'.Fields("SourceFileName").Value = str_Template
End With
If SofortSendenOderAnzeigen = 0 Then
obj_MailItem.Save
'*** RecNo = ID der erstellten Email! ***
str_RecNo = obj_MailItem.Fields("RecNo").Value
'*** öffnen der Email in Tobit ***
str_ShellCmd = str_TobitPath & "\DVWIN32.EXE " & obj_Archive.ID & " /SA=34 /POS=" & str_RecNo & " /FROM=" & str_Template
obj_WshShell.Exec (str_ShellCmd)
'*** Wichtig!!! Löschen des Emailobjekts! Sonst ist Email doppelt vorhanden! ***
obj_MailItem.Delete
Else
'*** normales Senden der Email ***
obj_MailItem.Send
Set obj_MailItem = Nothing
End If
Exit_End1:
Exit Function
Err_End1:
Select Case ErrorHandler(""): Case Is = 5: Resume Next: Case Is = 4: Resume: End Select: Resume Exit_End1
Resume
End Function
Alles anzeigen
Bitte nicht wundern. Ich habe einige interne Passagen raus genommen, da Sie für die Probleme unwichtig sind.
Hier nun meine Probleme:
1. Ich würde gern das Programm mit einer Vorlage öffnen und versenden, leider fehlen mir die Befehle um diese in das Mailitem einzufügen.
2. Das sofort senden funktioniert nicht da in David angezeigt wird das keine Email-Adresse vorhanden ist. (Meine Vermutung: .send greift nicht auf die .fields("SRTo") zu.)
Ich hoffe ihr könnt mir helfen.
Gruß
Axel