Anwendungsbeispiel Outlook

 

Hier soll nun die Fähigkeit, einen externen Import ins Formulararchiv mittels eingehender Mail via Outlook, demonstriert werden.

 

Dazu kopiert man sich unten folgendes Outlook-Script in die VBAProjekt.OTM und passt in der Zeile 2 den Parameter auf sie Sektion an mit seinem eigenen Mandanten/Sektion-Namen. In Zeile 3 kann – muss aber nicht – der Arbeitspfad angepasst werden; er sollte aber auf jedem Falle vorhanden sein. Bitte denken Sie daran in vorher anzulegen.

Wichtig ist die Zeile 3, in der die Ident des Imports anzugeben ist. In meinem Beispiel ist es die 24.

 

Als weitere vorbereitende Maßnahme sollten Sie – falls noch nicht geschehen – das COM-Objekt A.eins einmalig registrieren, das geschieht durch den Aufruf / Kommandozeile im Bin-Verzeichnis von A.eins

Aeins.exe welcome ServerInstall=true

Public Sub Aeins_Export()

  Dim Aeins_Verbindung As String: Aeins_Verbindung = "section=ah"

  Dim Aeins_ImportPfad As String: Aeins_ImportPfad = "c:\temp\outlook"

  Dim Aeins_ImportProfil As Integer: Aeins_ImportProfil = 24

  Dim myOlApp As Object: Set myOlApp = CreateObject("Outlook.Application")

  Dim myItem As Outlook.Inspector: Set myItem = myOlApp.ActiveInspector

   

  If TypeName(myItem) = "Nothing" Then

    MsgBox "Kein aktives Mailfenster!"

    GoTo raus

  End If

  Dim objItem As Object: Set objItem = myItem.CurrentItem

  Dim SenderEmailAddress As String

  If objItem.SenderEmailType = "SMTP" Then

    SenderEmailAddress = objItem.SenderEmailAddress

  Else

    SenderEmailAddress = objItem.SenderName

  End If

  ' ersetze @ durch .

  SenderEmailAddress = Replace(SenderEmailAddress, "@", ".")

  

  Dim Aeins As Object: Set Aeins = CreateObject("AMIC.Aeins")

  If Aeins Is Nothing Then

    MsgBox "Es besteht keine Aeins-Verbindung!"

    GoTo raus

  End If

  Dim Connect As Boolean: Connect = Aeins.Connect(Aeins_Verbindung)

  If Connect = False Then

    MsgBox "Connect zur Datenbank fehlgeschlagen!"

    GoTo ende

  End If

 

  Dim hdl As String: hdl = "outlook is calling"

  Aeins.jpp_new hdl, "JFileSystem"

  Aeins.jpp_in hdl, "DIR", Aeins_ImportPfad

  Aeins.jpp_do hdl, "DirectoryCreate"

  Aeins.jpp_delete hdl

  objItem.SaveAs Aeins_ImportPfad & "\" & SenderEmailAddress & ".msg", olMSG

  Aeins.jpp_new hdl, "JFA_Import"

  Aeins.jpp_in hdl, "fai_id", Aeins_ImportProfil

  Aeins.jpp_in hdl, "fai_pfad", Aeins_ImportPfad

  Aeins.jpp_in hdl, "receiver", objItem.ReceivedByName

  Aeins.jpp_do hdl, "Free_Import"

  Aeins.jpp_delete hdl

ende:

  Aeins.Quit

raus:

End Sub

 

Dann wird eine Beispielmail verfasst.

 

Die ankommende Mail erscheint wie folgt

 

Man sieht rechts oben einen Knopf, an den ich das Outlook-Makro gebunden habe.

Dieser wird betätigt und ein eventueller Warnhinweis von Outlook bestätigt.

 

Im Formulararchiv von A.eins ist nun folgender Eintrag zu finden:

 

 

Die Mail lässt sich nun wie gehabt ansehen

Zuständig war folgendes Profil:

 

Das besondere hierbei ist eben die „24“, die dem Outlook-Script mitgeteilt werden muss und zum anderen die feste Zuweisung der Belegklasse 8002 an diesen Vorgang; es handelt sich ja um Mail.

Interessant ist nun hierbei noch die Ermittlung der Kundennummer aus der Mailadresse.

Das System ist anwenderfreundlich aufgebaut, es stellt also eine Standard-Funktionalität zur Verfügung (in diesem Falle eine Datenbank-Funktion), die dann ggf. nach den eigenen Vorstellungen bzw. Sachzwängen modelliert werden kann.

 

Amic_fa_kundnummer_mail ist so gestrickt:

CREATE FUNCTION AMIC_FA_KUNDNUMMER_MAIL

( IN  in_MailAdresse varchar(200) ) returns integer

BEGIN

  DECLARE fetch_kundnummer integer;

 

  select first k.kundnummer into fetch_kundnummer

  from kundenstamm k join anschriftstamm a on k.kundid = a.adressnummer

  where a.adressmailadress = in_MailAdresse; 

  return fetch_kundnummer;                              

 END

 

An Hand der Mail-Adresse wird also die Kundennummer ermittelt.

Ist also die Mail-Adresse beim Kunden hinterlegt, so kann sie auch gefunden werden.