Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 4/2004.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Mail versenden ohne Outlook

André Minhorst, Duisburg

Die Möglichkeit, Mails ohne die Verwendung von Outlook zu versenden, würde vielen Access-Anwendungen gut zu Gesicht stehen. Wo auch immer der direkte Versand von Informationen interessant ist, tritt normalerweise Outlook auf den Plan. Das ist aber nicht immer gewünscht, denn warum sollte man denn einen Umweg gehen, wenn man auch direkt auf die entsprechenden Funktionen des Betriebssystems - in diesem Fall auf die Bibliothek Winsock.dll - zugreifen kann?

Appetithäppchen

Wer einmal von Access aus versucht hat, mit Hilfe von Microsoft Outlook automatisiert Mails zu verschicken, und sich ein wenig mit SMTP auskennt, der weiß, dass er dabei mit Kanonen auf Spatzen schießt. Dabei öffnet man nämlich eine Riesenanwendung, nur um ein paar Zeilen an einen Mailserver zu schicken. Wenn man Outlook nur zu diesem Zweck startet und anschließend wieder schließt, frißt dieser Vorgang durchaus einige Sekunden.

Warum also nicht einmal ein wenig in der Geheimniskiste kramen und E-Mails versenden, ohne den Umweg über Outlook in Kauf zu nehmen? Wenn man auf den - zugegebenermaßen vorhandenen - Komfort von Outlook verzichten kann und einfach nur zu bestimmten Anlässen eine Mail direkt über die Datenbankanwendung versenden lassen möchte, ist das bestimmt eine gewisse Vorarbeit wert.

Anwendungsfälle dafür gibt es genug. Das Verschicken einer Rundmail an ein paar hundert Kunden aus der Kontakte-Tabelle geht damit sicher wesentlich schneller als mit Outlook, aber das ist noch nicht einmal der wichtigste Grund, Access in einen Mail- beziehungsweise SMTP-Client umzubauen. Viel interessanter ist beispielsweise das automatisierte Verschicken einer Mail, wenn zum Beispiel der Lagerbestand einer bestimmten Ware einen kritischen Wert erreicht oder wenn Fehlfunktionen auftreten.

Dazu bedarf es allerdings einiger grundlegender Kenntnisse über Winsock, SMTP sowie den Aufbau von Mails im Allgemeinen. Die nachfolgenden Kapitel behandeln diese Themen in der notwendigen Tiefe.

Schließlich folgen zum Schluss einige Beispiele für den Praxiseinsatz von SMTP innerhalb von Access-Datenbanken.

Access und SMTP

Auf Windows-Betriebssystemen verwendet man zum Versenden von E-Mails in der Regel Microsoft Outlook, Outlook Express oder einen ähnlichen Mail-Client.

Diese Anwendungen verfügen über eine Menge wichtige und weniger wichtige Funktionen, die dem Anwender den Großteil der Arbeit abnehmen. Der muss in der Regel nur noch den oder die Adressaten, die Betreffzeile und den Text eingeben und auf den Senden-Button klicken, um eine Mail zu versenden. In manchen Fällen gibt’s noch eine Beilage in Form eines so genannten Attachments, das aber ebenfalls bequem per Dialog zu ermitteln ist.

Abb. 1: Der SMTP-Server ist zur Eingabe bereit.

Wenn man von Access aus eine Mail versenden möchte, kann man dies mit Microsoft Outlook ab der Version 2000 ohne Probleme per Automatisierung erledigen. Per VBA lassen sich dann leicht die Methoden, Ereignisse und Eigenschaften des Outlook-Objektmodells ansprechen und von Access aus fernsteuern.

Outlook selbst verwendet dann das zur Familie der TCP/IP-Protokolle gehörende SMTP (Simple Mail Transfer Protocol), um eine E-Mail an den entsprechenden SMTP-Server zu schicken. Dieser befördert diese E-Mail dann gegebenenfalls über weitere SMTP-Server zum Zielrechner, von wo der Adressat die E-Mail dann mit seiner eigenen E-Mail-Software per POP3 auf seinen Rechner holt. Diesen letzten Schritt behandelt der vorliegende Beitrag indes nicht, obwohl auch das automatisierte Abholen und Auswerten von
E-Mails sicher seinen Reiz hätte.

Den SMTP-Server, auch MTA (Mail Transfer Agent) genannt, stellt in der Regel der Provider zur Verfügung, über den man auch die Verbindung zum Internet herstellt. Wer über eine eigene Internetseite oder über Webspace für andere Zwecke verfügt, kann möglicherweise auf eine eigene E-Mail-Adresse und damit auf einen alternativen SMTP-Server zugreifen. Und wer es auf die Spitze treibt, hat vielleicht sogar einen eigenen Server gemietet oder gekauft, auf dem er seinen persönlichen Mailserver mit entsprechendem SMTP-Dienst betreibt.

Wenn nun beispielsweise Microsoft Outlook eine Mail an einen SMTP-Server schicken soll, baut es zunächst eine Verbindung zum Zielrechner auf. Dafür ist die Winsock-Schnittstelle zuständig, deren Funktionen sich in der Datei Wsock32.dll befinden. Diese Schnittstelle ist nicht nur die Grundlage für das SMTP-Protokoll, sondern auch für weitere Dienste wie Telnet oder FTP.

Ist eine Verbindung via Winsock eingerichtet, können die verbundenen Rechner Nachrichten hin- und herschicken. Im vorliegenden Fall sind das SMTP-Befehle und die entsprechenden Antworten. Mit den SMTP-Befehlen übergibt der sendende Rechner alle Informationen über die zu versendende Mail - angefangen von den wichtigsten Daten, nämlich der Absender- und der Empfängeradresse bis hin zum eigentlichen Inhalt. Dieser wiederum kann sich äußerst vielfältig gestalten - von der einfachen Textmail über eine HTML-Mail bis hin zu Mails mit Anhängen oder mehreren unterschiedlichen Inhaltsarten, die der empfangende Client je nach seinen Möglichkeiten anzeigt.

Das SMTP-Protokoll

Das Simple Mail Transfer Protocol ist recht einfach zu überschauen. Nachfolgend ist ein Beispiel skizziert, das dessen Anwendung in der Praxis erläutert und gleichzeitig die Einfachheit verdeutlicht.

Dabei verwendet man die Eingabeaufforderung von Windows, um per Tastatur eine komplette Mail an einen beliebigen Adressaten zu versenden.

Nach dem Öffnen der Eingabeaufforderung startet man zunächst eine Verbindung zum Mailserver, und zwar über den Port 25. Die entsprechende Anweisung sieht folgendermaßen aus (im Beispiel für den Mailserver von Strato):

telnet post.strato.de 25

Die Angabe des Ports, also der 25, ist besonders wichtig. Lässt man diese Information weg, geht Telnet von Port 23 aus, was in der Regel nicht zum Erfolg führt. Daraufhin meldet sich der SMTP-Server des jeweils angegebenen Providers mit einer Ausgabe wie in Abb. 1.

Anschließend kann man direkt mit der Eingabe der gewünschten SMTP-Befehle beginnen. Quellcode 1 enthält eine beispielhafte Kommunikation zwischen Client und SMTP-Server.

Zunächst begrüßt man den Server mit dem Befehl HELO <Rechnername>. Der SMTP-Server antwortet mit einem lockeren ‚...pleased to meet you’ - je nach Server kann man aber auch eine andere Floskel lesen.

Anschließend folgen die drei eigentlichen Elemente einer E-Mail:

  • Envelope: enthält den Sender und Empfänger der Mail
  • Header: enthält Daten wie From, To, Subject, Date oder Message-ID
  • Body: enthält die eigentliche Nachricht
  • Der Umschlag der Mail

    Danach folgen die beiden wichtigsten Informationen: Die Übermittlung des Adressaten sowie des Absenders der Mail. In beiden Fällen ist man mit der Großschreibung der Befehle, dem Einfassen der Adressen in spitzen Klammern und dem Verzicht auf Leerzeichen zwischen Doppelpunkt und Adresse auf der sicheren Seite. Soweit der SMTP-Server alle bisherigen Angaben akzeptiert, sendet er jeweils den Code 250 als Bestätigung der Ausführung der Kommandos zurück - unter Umständen ergänzt durch weitere, serverabhängige Floskeln.

    Der Briefkopf

    Anschließend leitet man durch die Anweisung DATA die Eingabe der Header-Informationen und des eigentlichen Inhalts der Mail ein.

    Während die soeben genannten Daten quasi den Briefumschlag der Mail darstellen und für die eigentliche Versendung wichtig sind, folgen nun einige Daten, die bei einem normalen Brief auch innerhalb des Umschlags auf dem Brief selbst stehen würden. Dazu gehören folgende Informationen:

  • From: Senderadresse, eventuell mit vollem Namen und anschließender, in spitze Klammern gesetzter E-Mail-Adresse
  • To: Empfängeradresse, Syntax wie From
  • Subject: Betreff der E-Mail
  • Date: Datum der Mail, muss für eine korrekte Übernahme in den Mail-Client ein bestimmtes Format haben, das später beschrieben wird
  • Reply-To: Wenn der Empfänger einer Mail Antworten nicht an den Absender, sondern eine andere Adresse senden soll, kann man diesen Header verwenden.
  • Hinweis

    Es gibt noch eine Reihe weiterer Header, deren Beschreibung allerdings den Rahmen dieses Beitrags sprengen würde. Weitere Informationen findet man unter der folgenden Internetadresse (ohne Zeilenumbruch): http://sites.inka.de/anc
    alagon/faq/headerfaq.html (

    Der Inhalt

    Nach den Headerzeilen folgt in der Regel der eigentliche Inhalt einer Mail. Diesen schreibt man einfach ohne weitere Angaben in die dem letzten Header folgende Zeile. Dabei kann man beliebige Zeichen und auch Leerzeilen verwenden.

    Das Absenden der Mail initiiert man durch die Eingabe eines einzelnen Punktes in einer Zeile. Der Server akzeptiert die Mail dann entweder mit dem Code 250 oder "meckert", wenn ein Header nicht den Konventionen entsprechen sollte.

    In ersterem Fall ist die Mail damit verschickt und trifft in Kürze beim Empfänger ein - zumindest, sofern nicht vorher ein Viren- oder Spamprogramm auf den Plan tritt und die Mail aussortiert, ansonsten muss man die eingegebenen Daten überprüfen.

    220 post.webmailer.de ESMTP Sendmail 8.12.10/8.12.10; Thu, 8 Jul 2004 09:44:57 +0200 (MEST)

    HELO Mein Rechnername

    250 post.webmailer.de Hello pD9561037.dip.t-dialin.net [217.86.16.55], pleased to meet you

    MAIL FROM:<andre@minhorst.com>

    250 2.1.0 <andre@minhorst.com>... Sender ok

    RCPT TO:<info@access-im-unternehmen.de>

    250 2.1.5 <info@access-im-unternehmen.de>... Recipient ok

    DATA

    354 Start mail input; end with <CRLF>.<CRLF>

    From:André Minhorst <andre@minhorst.com>

    To:Info <info@access-im-unternehmen.de>

    Subject:Beispielmail für Access im Unternehmen

    Date:Thu, 8 Jul 2004 09:44:57 +0200

    Hallo Access im Unternehmen,

    dies ist eine Beispielmail.

    Viele Grüße

    André Minhorst

    .

    250 2.0.0 i687ivHP001747 Message accepted for delivery

    Quellcode 1

    Damit sind die Grundlagen für das Versenden einer Mail per SMTP geklärt. Später kommen noch einige Informationen hinzu, wie man beispielsweise Dateien an eine Mail anhängen oder eine Mail gleichzeitig im Text- und HTML-Format verschicken kann.

    Winsock verwenden

    Die Grundlage für das Versenden von Mails direkt von Access aus ist die Herstellung einer Verbindung zwischen dem verschickenden Rechner und dem Zielrechner, also dem SMTP-Server. Diese Verbindung realisiert man über die Winsock-Schnittstelle von Microsoft Windows.

    Die Prozeduren und Funktionen in den nachfolgenden Beispielen basieren auf der Arbeit von John Rhoton. Er beschreibt in seinem Buch Programmer's Guide to Internet Mail (Digital Press, 1999) unter anderem ausführlich die Funktionsweise von Winsock und SMTP. Die diesem Beitrag zugrunde liegenden Funktionen können dem Download für Visual Basic unter der folgenden Adresse entnommen werden (ohne Zeilenumbruch): http://www.winsite.com/bin/In
    fo?500000022279. (

    Die Verwendung der Winsock-Schnittstelle ist auf den ersten Blick eine sehr umfangreiche und unübersichtliche Geschichte. Dank der Arbeit von John Rhoton reduziert sich das Ganze aber auf einige wesentliche Punkte. In den Beispieldaten, die er eigentlich für die Verwendung in Visual Basic zusammengestellt hat, findet man unter anderem eine recht große Sammlung an API-Funktionen.

    Wer den Umgang mit solchen Funktion nicht gewohnt ist, verstrickt sich dort leicht. Glücklicherweise hat John Rhoton eine Menge Wrapper-Funktionen hinzugefügt, die den eigentlichen Aufruf der API-Funktionen übernehmen und dabei nur die wirklich benötigten Informationen als Parameter erwarten. Die verwendeten API-Funktionen gehören bis auf wenige Ausnahmen der Windows-Bibliothek wsock32.dll an.

    Funktionen der
    Beispieldatenbank

    Die Beispieldatenbanken zu diesem Beitrag enthalten einige Module, deren Routinen nachfolgend kurz erläutert werden.

    Das Modul mdlWinsock

    Dieses Modul enthält die bereits weiter oben erwähnten Deklarationen der API-Funktionen für die Verwendung der Winsock-Schnittstelle.

    Außerdem findet man hier die Wrapperfunktionen, die die Arbeit mit API-Funktionen vereinfachen.

    Starten von Winsock

    Die Funktion StartWinsock erwartet keine Parameter und startet Winsock. Wenn der Start erfolgreich verläuft, gibt die Funktion einige Statusmeldungen im Testfenster aus.

    Aktuelle IP-Adresse ermitteln

    Die Funktion GetIPAdress ermittelt die IP-Adresse des zu verwendenden SMTP-Servers.

    Verbindung erstellen

    Das Verbinden zum SMTP-Server erfolgt durch den Aufruf der beiden Funktionen CreateSocket und ConnectSocket. Die erste sorgt für die Voraussetzung auf dem Client, indem sie ein Handle auf ein Socket von Winsock ermittelt. Die zweite Funktion baut die Verbindung zum SMTP-Server auf, dessen IP-Adresse die Funktion GetIPadress zuvor ermittelt hat.

    Daten senden und empfangen

    Der eigentliche Verkehr erfolgt dann durch die beiden Funktionen SendSocket und ReceiveSocket. Die Funktion SendSocket schickt jeweils eine Anweisung an den SMTP-Server.

    Die Funktion ReceiveSocket liest die Antwort des SMTP-Servers auf die gesendete Anweisung.

    Socket verabschieden

    Die Funktion ReleaseSocket beendet schließlich die Verbindung zwischen dem Client und dem SMTP-Server.

    Das Modul mdlFileDialog

    Eine der Beispielanwendungen bietet die Möglichkeit zum Anhängen einer Datei an eine Mail. Mit den Funktionen des Moduls mdlFileDialog kann man den Dialog zur Auswahl der anzuhängenden Datei aufrufen. Weitere Informationen zu diesen Funktionen finden Sie unter dem folgenden Link (ohne Zeilenumbruch): http://www.
    access-im-unternehmen.de:8080/192.0.html

    Das Klassenmodul MIMEMessage

    Diese Klasse enthält die Methoden zum Zusammensetzen des eigentlichen Inhalts der Mail, also der Header und des Body. Eine Beschreibung der notwendigen Funktionen folgt weiter unten in Kapitel 7.

    Das Klassenmodul
    MIMEAttachment

    In dieser Klasse findet man einige Funktionen, mit denen man Dateien in Mail-taugliche Datenpakete umwandelt. Eine Beschreibung dieser Funktionen würde den Rahmen des vorliegenden Beitrags sprengen.

    Beispielanwendungen

    Die nachfolgenden Abschnitte stellen vier unterschiedliche Variationen für den Einsatz von SMTP unter Access vor:

  • Versenden einer Textmail
  • Versenden einer Mail mit Text- und HTML-Inhalt, der je nach Client in dem einen oder anderen Format erscheint
  • Versenden einer Mail mit einer angehängten Datei
  • Versenden einer Mail an mehrere Empfänger
  • Private Sub Form_Open(Cancel As Integer)

        Me.txtSMTPServer = "smtp.beispielserver.de"

        Me.txtFrom = "info@beispielserver.de"

        Me.txtTo = "info@access-im-unternehmen.de"

        Me.txtSubject = "Testmail"

        Me.txtPlaintext = "Dies ist eine Testmail."

        Me.txtPort = 25

        Me.txtSendername = "André Minhorst"

        Me.txtSenderEMail = "info@beispielserver.de"

        Debug.Print StartWinSock

    End Sub

    Quellcode 1

    Abb. 2: Das Formular zum Versenden einer E-Mail

    Abb. 3: Das ausgefüllte Formular zum Versenden einer Textmail

    Es folgt nun eine ausführliche Beschreibung des ersten Beispiels, das als Grundlage für die nachfolgenden Beispiele dient.

    Die Erläuterung der Besonderheiten der anderen Beispiele folgt im Anschluss.

    Versenden einer Textmail

    Wie weiter oben deutlich wurde, erfordert der Versand einer Mail einer Mail eine ganze Menge Informationen. Die Beispiele enthalten jeweils ein Formular, in das der Benutzer die notwendigen Informationen eintragen kann. Das Formular für das erste Beispiel heißt frmEinzelmailText und sieht in der Entwurfsansicht wie in Abb. 2 aus.

    Das Formular ist in dieser Version nicht an eine Tabelle gebunden. Wenn man das Formular als Grundlage für ein Tool zum Versenden von
    E-Mails verwenden möchte, würde man vermutlich eine oder mehrere Tabellen mit den relevanten Daten erstellen und das Formular an diese binden.

    Für Demozwecke reicht allerdings das ungebundene Formular aus. Ein Tipp: Wenn man beim Ausprobieren nicht immer wieder die Daten neu eingeben möchte, trägt man diese in die jeweilige Standardwert-Eigenschaft der einzelnen Steuerelemente ein.

    Noch einfacher ist es, die Beispielwerte in der Beim Öffnen-Ereignisprozedur unterzubringen, so kann man die Einträge später auf einen Rutsch wieder entfernen. Quellcode 1 zeigt die erforderlichen Zeilen. Die Anweisung StartWinsock muss das Formular beim Öffnen allerdings auf jeden Fall aufrufen. In Abb. 3 ist das mit der Routine aus Quellcode 1 ausgefüllte Formular zu sehen.

    Die Schaltfläche mit der Beschriftung Senden löst bei Betätigung eine Ereigniseigenschaft die die E-Mail mit den angegebenen Daten versendet. Die entsprechende Ereignisprozedur ist in Quellcode 2 zu finden.

    Private Sub cmdSend_Click()

        DoCmd.Hourglass True

        Dim lngSMTPSocket As Long

        Dim lngServerAddress As Long

        Dim strServerName As String

        Dim strServerResponse As String

        Dim mmsgCurrentMessage As New MIMEMessage

        Dim strCurrentLine

        Dim intStatus As Boolean

        lngSMTPSocket = 0

        strServerName = Me.txtSMTPServer

        intStatus = GetIPAddress(lngServerAddress, strServerName)

        intStatus = CreateSocket(lngSMTPSocket, 0)

        intStatus = ConnectSocket(lngSMTPSocket, lngServerAddress, Me.txtPort)

        intStatus = ReceiveSocket(lngSMTPSocket, strServerResponse)

        intStatus = SendSocket(lngSMTPSocket, "HELO " + Me.txtSMTPServer)

        intStatus = ReceiveSocket(lngSMTPSocket, strServerResponse)

        intStatus = SendSocket(lngSMTPSocket, "mail from:<" + Me.txtFrom + ">")

        intStatus = ReceiveSocket(lngSMTPSocket, strServerResponse)

        intStatus = SendSocket(lngSMTPSocket, "rcpt to:<" + Me.txtTo + ">")

        intStatus = ReceiveSocket(lngSMTPSocket, strServerResponse)

        intStatus = SendSocket(lngSMTPSocket, "data")

        intStatus = ReceiveSocket(lngSMTPSocket, strServerResponse)

        mmsgCurrentMessage.AddHeader "From", Me!txtSendername & " <" _
            & Me!txtSenderEMail & ">"

        mmsgCurrentMessage.AddHeader "To", Me!txtTo

        mmsgCurrentMessage.AddHeader "Subject", Me!txtSubject

        mmsgCurrentMessage.AddHeader "Date", Choose(Weekday(Date), "Sun", "Mon", "Tue", _
            "Wed", "Thu", "Fri", "Sat") & ", " & Format(Now, "d") & " " _
            & Choose(Month(Date), "Jan", "Feb", "May", "Apr", "May", "Jun", "Jul", _
            "Aug", "Sep", "Oct", "Nov", "Dec") & " " & Format(Now, "yyyy") & " " _
            & Format(Now, "hh:nn:ss") & " +0200"

        mmsgCurrentMessage.BodyLines.Add Me.txtPlaintext

        mmsgCurrentMessage.ComposeSimple

        For Each strCurrentLine In mmsgCurrentMessage.Lines

            intStatus = SendSocket(lngSMTPSocket, CStr(strCurrentLine))

        Next

        intStatus = SendSocket(lngSMTPSocket, ".")

        intStatus = ReceiveSocket(lngSMTPSocket, strServerResponse)

        intStatus = SendSocket(lngSMTPSocket, "quit")

        intStatus = ReceiveSocket(lngSMTPSocket, strServerResponse)

        intStatus = ReleaseSocket(lngSMTPSocket)

        DoCmd.Hourglass False

    End Sub

    Quellcode 2

    Diese Routine hat keine andere Aufgabe, als die Schritte zu erledigen, die auch in Quellcode 1 durchgeführt werden - dort allerdings bei bestehender und direkter Verbindung zum SMTP-Server via Telnet.

    Public Sub ComposeSimple()

        Dim rhdrCurrentHeader

        Dim mattCurrentAttachment

        For Each rhdrCurrentHeader In Headers

            Lines.Add CStr(rhdrCurrentHeader.Label) + ": " _
                + CStr(rhdrCurrentHeader.Value)

        Next

        Lines.Add "MIME-Version: 1.0"

        Lines.Add "CONTENT-TYPE: text/plain; " _
            & "charset=""ISO-8859-1"""

        Lines.Add ""

        Dim CurrentLine

        For Each CurrentLine In BodyLines

            Lines.Add CStr(CurrentLine)

        Next

    End Sub

    Quellcode 3

    Per VBA ist selbstverständlich ein wenig mehr Aufwand vonnöten. Die Prozedur startet und endet mit dem Ein- und Ausblenden der Sanduhr anstelle des Mauszeigers, damit der Benutzer weiß, dass gerade etwas passiert.

    Anschließend deklariert die Routine einige Variablen, unter anderem auch eine Instanz der Klasse MIMEMessage. Dann liest sie den Namen des SMTP-Servers aus dem Textfeld txtSMTPServer ein und ermittelt über die Funktion GetIPAdress die IP-Adresse des Servers. Die bereits weiter oben erläuterten Funktionen CreateSocket und ConnectSocket stellen die Verbindung zum Server her.

    Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

    Sind Sie Abonnent?Jetzt einloggen ...
     

    Kompletten Artikel lesen?

    Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

    E-Mail:

    Verwandte Beiträge:

    Outlook: Mails

    Outlook und Access - Import und Export von Access-Daten

    Google Earth ferngesteuert, Teil II

    © 2003-2015 André Minhorst Alle Rechte vorbehalten.