David V8 Email per Visual Basic (VB) ansprechen - Schnittstellenbeschreibung

  • Hallo David User,

    wir setzen eine selbstprogrammierte Access Datenbank ein.

    Dort habe ich (vor David Zeiten) eine Funktion gebastelt, die mir eine neue Email mit vorgefertigten Betreff, Nachrichteninhalt und angehängter Datei öffnete. (der Dateianhang ist das wichtigste !)

    Das Script sah in etwa wie folgt aus:
    ###Anfang###
    Dim objOutlook As Outlook.Application
    Dim objOutlookMsg As Outlook.MailItem
    Dim objOutlookRecip As Outlook.Recipient
    Dim objOutlookAttach As Outlook.Attachment

    'Variablen
    Dim Empf As String 'An:
    Dim CC As String 'CC:
    Dim BCC As String 'BCC:
    Dim Betreff As String
    Dim Nachricht As String
    Dim ATT As String 'Dateipfad zum Anhang (Anlage)

    Betreff = "bla bla"
    Nachricht = "Sehr geehrte Damen und Herren,"
    'Fest codierten Pfad vorgeben
    ATT = "O:\Daten\Zeichnungen\" & Me!Zeichnung
    ' Outlook öffnen
    Set objOutlook = CreateObject("Outlook.Application")
    ' Nachricht in Outlook erstellen.
    Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
    With objOutlookMsg
    ' Empfänger hinzufügen
    'Set objOutlookRecip = .Recipients.Add("ler@in")
    'objOutlookRecip.Type = olBCC
    'objOutlookRecip.Type = olTo

    ' Betreff, Body, und Wichtigkeit setzen
    '.To = "ler@in"
    .Subject = Betreff
    .Body = Nachricht 'Nur Text
    .Importance = olImportanceNormal 'Low, Normal, High = Dringlichkeitsstufen
    ' Einen Anhang zur Mail hinzufügen.
    Set objOutlookAttach = .Attachments.Add(ATT)
    ' Empfängernamen überprüfen.
    'For Each objOutlookRecip In .Recipients
    ' objOutlookRecip.Resolve
    'Next
    'E-Mail in Outlook anzeigen oder sofort versenden mit Benachrichtigung?
    'DisplayMsg = Kontrollkästchen
    'E-Mail in Outlook anzeigen oder sofort versenden mit Benachrichtigung?
    'DisplayMsg = Kontrollkästchen
    .Display
    End With

    Set objOutlook = Nothing
    ###Ende###

    Wie lautet denn nun die korrekte Befehlsreferenz um das David InfoCenter ansprechen zu können ?

    Vielen Dank im Voraus.

    Gruß

    Alex

    Einmal editiert, zuletzt von AlexD (20. Juli 2006 um 17:11)

  • Erstelle eine Text-Datei mit der Endung .fax (du kannst die erlaubten Endungen auch im DvISE-Administrator ändern und ergänzen) in dem Verzeichnis X:\David\Import\

    Die Datei kann dann z.B. so aussehen:

    Code
    @@NUMMERNLISTE email@provider-eins.de@@
    @@NUMMERNLISTE noch_einer@web.de@@
    @@VON absender@provider-zwei.de@@
    @@ATTACH \\Server\Freigabe\Dateiname.xyz, Kommentar@@
    @@ATTACH x:\test\File.sys, Kommetar zur 2. Datei@@
    @@BETREFF DTA und ZEDA Abrechnungs-Daten@@
    
    
    Hier steht dann der Mail-Text

    Auf diese Weise kannst du sehr einfach Mails mit Anhang etc. versenden. Und zwar aus jedem Programm...ohne großen Programmieraufwand. Wie gesagt einfach diese Textdatei mit der korrekten Endung in das Import-Verzeichnis kopieren und David tut den Rest. Du kannst so auch Faxe automatisch versenden, oder (wenn lizensiert) SMS und und und

    Diese und weitere @@-Befehle kannst du im DvISE-Handbuch nachlesen.

    Oder war das nicht das, was du wolltest?

    Viele Grüße.

    There are only 10 types of people in the world:
    Those who understand binary and those who don´t.

  • Hallo,

    habe jetzt die dvapi32.dll im Einsatz und damit funktioniert der Emailversand aus Access heraus.

    Ich möchte nun aber nicht die Email sofort versenden (liegt dann im Postausgang) und auch den Status nicht auf "wartend" setzen (liegt dann im Postausgang mit Status wartend), somdern ich hätte gerne das ein Emaildialog aufgeht, wo man dann noch auf senden klicken muss.

    Gibt es hierfür eine Variable, Switch, Commando (was auch immer.

    Anbei mal Visual Basic mein Quelltext:

    On Error GoTo Fehlerbehandlung

    Dim oApp As DvApi32.IApplication
    Dim oAccount As DvApi32.Account
    Dim oArchive As DvApi32.Archive
    Dim oMailItem As DvApi32.MailItem
    Dim oAttachment As DvApi32.Attachment
    Dim l As Long

    Set oApp = CreateObject("DVOBJAPILib.DvISEAPI")
    Set oAccount = oApp.Logon("", "", "", "", "", "AUTH")
    Set oArchive = oAccount.GetSpecialArchive(DvApi32.DvArchiveTypes.DvArchivePersonalOut)
    Set oMailItem = oArchive.NewItem(DvApi32.DvItemTypes.DvEMailItem)

    l = oMailItem.Recipients.Add("Eamil@Adresse.de", "MAIL", "")

    'Betreff
    oMailItem.Subject = "HTML mail with inline Grafik"

    'Text oder HTML
    'oMailItem.BodyText.HTMLText = "<hmtl><body>That it is<br><img src='cid:myimgcid'></body></html>"
    oMailItem.BodyText.PlainText = "Hallo"

    'Email im Postausgang halten (True) oder gleich versenden (False)
    oMailItem.Options.UserHold = True

    'Anhänge
    'Set oAttachment = oMailItem.Attachments.Add("c:\\Images\\logo.jpg", "cid:myimgcid")
    Set oAttachment = oMailItem.Attachments.Add("O:\Daten\Zeichnungen\01.2001.1008_Zeichnung.dwg", "testbezeichnung Anhang")
    oMailItem.Send

    MsgBox ("Die Email wurde in den Postausgang gelegt.")

    Fehlerbehandlung:
    If Err <> 0 Then '0 ist der Standarwert eines Fehlers und muss daher abgefangen werden
    MsgBox "Es ist ein Fehler aufgetreten: " & Error
    MsgBox "Err: " & Err

    Vielleicht hat ja jemand einen Tipp für mich.

    Danke und Gruß

    Alex
    MsgBox "Funktion wird abgebrochen"
    End If

  • Da ich mehrere E-Mails in einer Schleife versenden möchte und jede E-Mail andere Anhänge hat muss ich die mit "Set oAttachment = oMailItem.Attachments.Add" zugewiesenen Anhänge wieder entfernen.

    Mit welchem Befehl geht das?

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!