{"id":55000859,"date":"2012-12-01T00:00:00","date_gmt":"2020-05-22T21:49:08","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=859"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"OutlookMails_mit_Klasse","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/OutlookMails_mit_Klasse\/","title":{"rendered":"Outlook-Mails mit Klasse"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg05.met.vgwort.de\/na\/7567afaab2074f52bec75d34c18d1c5d\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Das Versenden von E-Mails mit Access ist eines der besten Beispiele f&uuml;r die Interaktion von Access mit anderen Office-Komponenten. Es gibt zahlreiche Anwendungsf&auml;lle f&uuml;r das Versenden von E-Mails von einer Datenbank-Anwendung aus &#8211; egal, ob es sich nun um Anschreiben an Kunden, an Serien-E-Mails oder auch an E-Mails zum Versenden von Fehlermeldungen handelt. Grund genug, diese Funktion einmal in eine eigene Klasse auszulagern, die Sie dann ganz einfach in die Zielanwendung importieren und direkt einsetzen k&ouml;nnen.<\/b><\/p>\n<p>Diese Klasse umfasst einige Funktionen, die erst mit neueren Outlook-Versionen verf&uuml;gbar sind. Wir weisen an entsprechender Stelle darauf hin und stellen auch eine Version der Klasse zur Verf&uuml;gung, die mit &auml;lteren Outlook-Versionen arbeitet. Um die hier vorgestellte Klasse einsetzen zu k&ouml;nnen, m&uuml;ssen Sie lediglich die Klasse in Ihre Anwendung importieren und einen Verweis auf die Bibliothek <b>Microsoft Outlook x.0 Object Library <\/b>zum VBA-Projekt der aktuellen Datenbank hinzuf&uuml;gen. Die Klasse finden in der Beispieldatenbank zu diesem Beitrag, den Verweis f&uuml;gen Sie &uuml;ber den <b>Verweise<\/b>-Dialog (VBA-Editor, Men&uuml;-Eintrag <b>Extras|Verweise<\/b>) hinzu.<\/p>\n<p><b>Einfacher Versand<\/b><\/p>\n<p>Wenn Sie beispielsweise einen Kundendatensatz samt E-Mail-Adresse des Kunden in einem Formular anzeigen, k&ouml;nnen Sie diesem eine einfache Schaltfl&auml;che zum Erstellen einer E-Mail an diesen Kunden hinzuf&uuml;gen (s. Bild 1).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_06\/MailsMitKlasse-web-images\/pic001.png\" alt=\"pic001.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1: Einfacher Mailversand an einen Kunden<\/span><\/b><\/p>\n<p>Ein Klick auf diese Schaltfl&auml;che soll eine neue E-Mail anlegen und &ouml;ffnen, damit der Betreff und der Inhalt eingef&uuml;gt werden k&ouml;nnen. Der dazu notwendige Code sieht schlicht wie folgt aus:<\/p>\n<pre>Private Sub cmdEMailSenden_Click()\r\n    Dim objMail As clsMail\r\n    Set objMail = New clsMail\r\n    With objMail\r\n        .AnHinzufuegen Me.EMail\r\n        .Betreff = &quot;Beispielbetreff&quot;\r\n        .Inhalt = &quot;Dies ist eine Beispiel-E-Mail.&quot;\r\n        .Senden\r\n    End With\r\nEnd Sub<\/pre>\n<p>Sie erstellen hier ein neues Objekt auf Basis der Klasse <b>clsMail <\/b>und legen dann die Eigenschaften der zu erstellenden E-Mail fest. Als Betreff und Inhalt weisen Sie entsprechende Platzhaltertexte zu, den Empf&auml;nger hingegen als Parameter der Methode <b>ToHinzufuegen<\/b>. Warum das Wir h&auml;tten auch einfach eine Eigenschaft namens <b>An <\/b>verwenden k&ouml;nnen, aber daraus w&auml;re nicht ersichtlich geworden, dass Sie damit nicht nur einen Empf&auml;nger, sondern gleich mehrere einf&uuml;gen k&ouml;nnen.<\/p>\n<p>Die Methode <b>Senden <\/b>f&uuml;hrt schlie&szlig;lich zum Versand der E-Mail.<\/p>\n<p><b>E-Mail vor dem Versenden anzeigen<\/b><\/p>\n<p>F&uuml;gen Sie dem gleichen Formular nun eine zweite Schaltfl&auml;che mit dem Text <b>E-Mail erstellen <\/b>hinzu und nennen diese <b>cmdMailErstellen<\/b>. Hinterlegen Sie daf&uuml;r den folgenden Code:<\/p>\n<pre>Private Sub cmdMailErstellen_Click()\r\n    Dim objMail As clsMail\r\n    Set objMail = New clsMail\r\n    With objMail\r\n        .AnHinzufuegen Me.EMail\r\n        .Betreff = &quot;[Betreff]&quot;\r\n        .Inhalt = &quot;[Inhalt]&quot;\r\n        .Anzeigen\r\n    End With\r\nEnd Sub<\/pre>\n<p>Diese Prozedur legt ebenfalls eine neue E-Mail an und weist einen Empf&auml;nger zu. Allerdings werden Betreff und Inhalt jeweils mit Platzhaltern gef&uuml;llt, die vom Benutzer noch durch den gew&uuml;nschten Text ersetzt werden sollen.<\/p>\n<p>Damit die Klasse die E-Mail nicht gleich versendet, sondern zuerst anzeigt, rufen Sie diesmal nicht die <b>Senden<\/b>-Methode, sondern die <b>Anzeigen<\/b>-Methode auf.<\/p>\n<p>Dies &ouml;ffnet die E-Mail im entsprechenden Editor von Outlook und erm&ouml;glicht das manuelle &auml;ndern und das anschlie&szlig;ende Versenden der E-Mail. Das Ergebnis finden Sie in Bild 2, dort sind auch die Platzhalter f&uuml;r Betreff und Inhalt zu erkennen.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_06\/MailsMitKlasse-web-images\/pic002.png\" alt=\"pic002.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2: Per VBA erzeugte E-Mail<\/span><\/b><\/p>\n<p><b>E-Mails speichern<\/b><\/p>\n<p>Einen Schritt weiter geht die n&auml;chste Anwendung. Die Tabelle <b>tblEMails <\/b>soll Informationen &uuml;ber alle versendeten E-Mails erfassen. Wenn die E-Mails mit der ersten Schaltfl&auml;che versendet werden, stehen Betreff und Inhalt bereits fest und k&ouml;nnen direkt in der Tabelle gespeichert werden.<\/p>\n<p>Dazu f&uuml;gen Sie einfach hinter dem Aufruf der Senden-Methode eine entsprechende Anf&uuml;geabfrage ein:<\/p>\n<pre>db.Execute (&quot;INSERT INTO tblEMails(KundeID, EMail, Betreff, Inhalt, Versanddatum) VALUES(&quot; _\r\n    &amp; Me!KundeID &amp; &quot;, ''&quot; &amp; Me!EMail &amp; &quot;'', ''&quot; &amp; .Betreff &amp; &quot;'', ''&quot; &amp; .Inhalt &amp; &quot;'', &quot; &amp; IsoDatum(Date) &amp; &quot;)&quot;)<\/pre>\n<p>Wenn der Benutzer die zu versendende E-Mail aber erst anzeigen l&auml;sst, danach den Betreff und den Inhalt manuell anpasst und die E-Mail erst dann versendet, wie landen die Daten dann in der Tabelle Immerhin tr&auml;gt der Benutzer diese Daten nur in der E-Mail ein, nicht in der Datenbank.<\/p>\n<p>Auch dies erm&ouml;glicht die Klasse: Sie tr&auml;gt die ge&auml;nderten Inhalte f&uuml;r den Betreff und den Inhalt der E-Mail mit dem Versenden in die entsprechenden Eigenschaften der Klasse <b>clsMail <\/b>ein, sodass Sie diese gleich nach dem Versenden weiterverarbeiten k&ouml;nnen.<\/p>\n<p>Wie das aussehen kann, zeigt der Beispielcode aus <span class=\"verweis-ohneumbruch\"><a href=\"#anker-53-anchor\">Listing 1<\/a><\/span>. Der Aufruf der Methode <b>Anzeigen <\/b>h&auml;lt den Code an, bis der Benutzer die angezeigte Mail versendet (siehe weiter unten). Klickt der Benutzer auf die Senden-Schaltfl&auml;che der E-Mail, werden die Inhalte an die Klasse &uuml;bergeben und k&ouml;nnen mit den Eigenschaften <b>Betreff <\/b>und <b>Inhalt <\/b>wieder ausgelesen werden. Hier erfolgt die Ausgabe im Direktfenster, bevor die E-Mail-Informationen in der Tabelle <b>tblEMails <\/b>gespeichert werden.<\/p>\n<p class=\"listingueberschrift\">Listing 1: Weiterverarbeiten der ge&auml;nderten Inhalte einer E-Mail nach dem Versenden<\/p>\n<pre>Private Sub cmdMailErstellen_Click()\r\n    Dim objMail As clsMail\r\n    Dim db As DAO.Database\r\n    Set objMail = New clsMail\r\n    Set db = CurrentDb\r\n    With objMail\r\n        .AnHinzufuegen Me.EMail\r\n        .Betreff = &quot;[Betreff]&quot;\r\n        .Inhalt = &quot;[Inhalt]&quot;\r\n        .Anzeigen\r\n        Debug.Print .Betreff\r\n        Debug.Print .Inhalt\r\n        db.Execute (&quot;INSERT INTO tblEMails(KundeID, EMail, Betreff, Inhalt, Versanddatum) VALUES(&quot; _\r\n            &amp; Me!KundeID &amp; &quot;, ''&quot; &amp; Me!EMail &amp; &quot;'', ''&quot; &amp; .Betreff &amp; &quot;'', ''&quot; &amp; .Inhalt &amp; &quot;'', &quot; _\r\n            &amp; ISODatum(Date) &amp; &quot;)&quot;), dbFailOnError\r\n    End With\r\n    Set db = Nothing\r\nEnd Sub<\/pre>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Versenden mehrerer E-Mails<\/p>\n<p>Sie k&ouml;nnen diese Klasse auch nutzen, um E-Mails gleich an mehrere Empf&auml;nger zu versenden. Ein Beispiel hierzu finden Sie in <span class=\"verweis-ohneumbruch\"><a href=\"#anker-57-anchor\">Listing 2<\/a><\/span>.<\/p>\n<p class=\"listingueberschrift\">Listing 2: Versenden mehrerer E-Mails<\/p>\n<pre>Public Function Serienmail()\r\n    Dim db As DAO.Database\r\n    Dim rst As DAO.Recordset\r\n    Dim objMail As clsMail\r\n    Set db = CurrentDb\r\n    Set rst = db.OpenRecordset(&quot;SELECT * FROM tblKunden&quot;, dbOpenDynaset)\r\n    Set objMail = New clsMail\r\n    Do While Not rst.EOF\r\n        With objMail\r\n            .AnHinzufuegen rst!EMail\r\n            .Betreff = &quot;Betreff&quot;\r\n            .Inhalt = &quot;Inhalt&quot;\r\n            .Senden\r\n            .NeueMail\r\n        End With\r\n        rst.MoveNext\r\n    Loop\r\n    Set objMail = Nothing\r\n    rst.Close\r\n    Set rst = Nothing\r\n    Set db = Nothing\r\nEnd Function<\/pre>\n<p>Diese Prozedur verwendet die Tabelle <b>tblKunden <\/b>als Datenherkunft f&uuml;r ein <b>Recordset<\/b>-Objekt.<\/p>\n<p>In einer <b>Do While<\/b>-Schleife durchl&auml;uft die Prozedur alle Datens&auml;tze dieses Recordsets und versendet darin jeweils eine E-Mail f&uuml;r den aktuellen Datensatz.<\/p>\n<p>Im Gegensatz zum Versenden einer einzelnen E-Mail m&uuml;ssen Sie nur einen kleinen Unterschied beachten: Nach dem Versenden einer Mail und vor dem dem Versenden der n&auml;chsten E-Mail m&uuml;ssen Sie mit der Methode NeueMail eine neue E-Mail erstellen.<\/p>\n<p>Alternativ k&ouml;nnen Sie auch das Erstellen der E-Mail mit <b>Set objMail = New clsMail <\/b>in die Schleife verlegen.<\/p>\n<p>Dies w&uuml;rde jedoch dazu f&uuml;hren, dass f&uuml;r jede E-Mail erneut eine Outlook-Instanz erstellt beziehungsweise eine bestehende Instanz referenziert werden muss &#8211; und dies wirkt sich bei vielen E-Mails sicher auf die Performance aus.<\/p>\n<p><b>E-Mail blind an mehrere Empf&auml;nger<\/b><\/p>\n<p>Nat&uuml;rlich k&ouml;nnen Sie auch eine einzige E-Mail gleichzeitig an mehrere verschiedene Empf&auml;nger versenden.<\/p>\n<p>Dazu strukturieren Sie einfach die Befehle der zuvor vorgestellten Prozedur so um, dass nur noch die Zuweisung der <b>BCC<\/b>-Empf&auml;ngeradressen innerhalb der Schleife liegt:<\/p>\n<pre>Public Function MailAnMehrereBlindeEmpfaenger()\r\n    ...\r\n    Set rst = db.OpenRecordset(&quot;SELECT * FROM tblKunden&quot;, dbOpenDynaset)\r\n    Set objMail = New clsMail\r\n    With objMail\r\n        .AnHinzufuegen &quot;info@access-basics.de&quot;\r\n        Do While Not rst.EOF\r\n            .BCCHinzufuegen rst!EMail\r\n            rst.MoveNext\r\n        Loop\r\n        .Betreff = &quot;Betreff&quot;\r\n        .Inhalt = &quot;Inhalt&quot;\r\n        .Anzeigen\r\n        .NeueMail\r\n    End With\r\n    ...\r\nEnd Function<\/pre>\n<p><!--30percent--><\/p>\n<p>Das Erstellen der E-Mail, das Hinzuf&uuml;gen der &uuml;brigen Informationen sowie das Versenden erfolgen au&szlig;erhalb der <b>Do&#8230;While<\/b>-Schleife. Das Ergebnis sieht dann etwa wie in Bild 3 aus.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_06\/MailsMitKlasse-web-images\/pic003.png\" alt=\"pic003.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3: E-Mail mit mehreren BCC-Empf&auml;ngern<\/span><\/b><\/p>\n<p><b>Absender &auml;ndern<\/b><\/p>\n<p>Gegebenenfalls m&ouml;chten Sie in einer Anwendung E-Mails mit verschiedenen Absenderadressen versenden.<\/p>\n<p>In diesem Fall verwenden Sie die Eigenschaft <b>Von <\/b>der Klasse <b>clsEMail<\/b>, um eine alternative Absenderadresse anzugeben.<\/p>\n<p>Bedenken Sie, dass Sie nur solche Absenderadressen angeben k&ouml;nnen, f&uuml;r die in Outlook entsprechende Konten angelegt sind.<\/p>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Gesendete E-Mail in bestimmten Ordner verschieben<\/p>\n<p>Gegebenenfalls m&ouml;chsten Sie eine E-Mail nach dem Versenden nicht im Standardordner Gesendete Objekte speichern, sondern in einem benutzerdefinierten Ordner unterhalb dieses Ordners.<\/p>\n<p>Dann geben Sie einfach f&uuml;r die Eigenschaft <b>Zielordner <\/b>des Objekts <b>objMail <\/b>den Namen des Ordners an &#8211; beispielsweise wie in folgendem Beispiel:<\/p>\n<pre>Public Function MailInBestimmtenOrdner()\r\n    Dim objMail As clsMail\r\n    Set objMail = New clsMail\r\n    With objMail\r\n        .AnHinzufuegen &quot;info@access-im-unternehmen.de&quot;\r\n        .Betreff = &quot;Betreff&quot;\r\n        .Inhalt = &quot;Inhalt&quot;\r\n        .Zielordner = &quot;test&quot;\r\n        .Senden\r\n    End With\r\n    Set objMail = Nothing\r\nEnd Function<\/pre>\n<p>Wenn sich der gew&uuml;nschte Zielordner nicht direkt unter dem <b>Gesendete Objekt<\/b>-Ordner befindet, trennen Sie die Unterordner durch Schr&auml;gstriche:<\/p>\n<pre>.Zielordner = &quot;test\/test\/test&quot;<\/pre>\n<p>Dies legt dann, soweit noch keiner der Ordner vorhanden ist, gleich drei verschachtelte Ordner an.<\/p>\n<p><b>Aufbau der Klasse clsMail<\/b><\/p>\n<p>Schauen wir uns nun an, wie die Klasse <b>clsEMail <\/b>aufgebaut ist und wie diese funktioniert. Wenn Sie die Klasse selbst nachbauen m&ouml;chten, erstellen Sie zun&auml;chst ein entsprechendes Klassenmodul mit dem Befehl <b>Einf&uuml;gen|Klassenmodul <\/b>des VBA-Editors und speichern Sie dieses unter dem Namen <b>clsMail<\/b>.<\/p>\n<p>Beim Initialisieren der Klasse etwa mit der Anweisung <\/p>\n<pre>Set objMail = New clsMail<\/pre>\n<p>wird in dieser Klasse gleich das <b>Initialize<\/b>-Ereignis ausgel&ouml;st, das mit folgender Ereignisprozedur implementiert wurde:<\/p>\n<pre>Private Sub Class_Initialize()\r\n    Set objOutlook = New Outlook.Application\r\n    Set objMail = objOutlook.CreateItem(olMailitem)\r\nEnd Sub<\/pre>\n<p>Diese Prozedur erzeugt zun&auml;chst eine neue Instanz von Outlook beziehungsweise referenziert eine bestehende Instanz mit der Objektvariablen <b>objOutlook<\/b>, die wie folgt im Kopf des Klassenmoduls deklariert wird:<\/p>\n<pre>Private objOutlook As Outlook.Application<\/pre>\n<p>Das ebenfalls in dieser Prozedur erzeugte MailItem-Objekt wird wie folgt deklariert:<\/p>\n<pre>Private WithEvents objMail As Outlook.MailItem<\/pre>\n<p>Das Schl&uuml;sselwort <b>WithEvents <\/b>sorgt daf&uuml;r, dass Sie die Ereignisse des <b>MailItem<\/b>-Objekts im vorliegenden Klassenmodul implementieren k&ouml;nnen. Wozu dies n&ouml;tig ist, erfahren Sie weiter unten.<\/p>\n<p><b>E-Mail mit Daten f&uuml;llen<\/b><\/p>\n<p>F&uuml;r eine E-Mail gibt es verschiedene Arten von Informationen. Betreff und Inhalt etwa nehmen einfache Texte auf, die einfach einer entsprechenden Eigenschaft der Klasse <b>clsMail <\/b>zugewiesen werden sollen.<\/p>\n<p>Dazu legen Sie f&uuml;r die beiden Eigenschaften <b>Betreff <\/b>und <b>Inhalt <\/b>die folgenden <b>Public Property Let<\/b>-Prozeduren an:<\/p>\n<pre>Public Property Let Inhalt(strBody As String)\r\n    objMail.Body = strBody\r\nEnd Property\r\nPublic Property Let Betreff(strSubject As String)\r\n    objMail.Subject = strSubject\r\nEnd Property<\/pre>\n<p>Beim Absender sieht dies &auml;hnlich aus. Allerdings wird dieser nicht einfach einer Eigenschaft zugewiesen wir der Empf&auml;nger.<\/p>\n<p>Stattdessen muss die dazu vorgesehene <b>Property Let<\/b>-Prozedur die in Outlook verf&uuml;gbaren Accounts dahingehend pr&uuml;fen, ob einer der Accounts mit der &uuml;bergebenen E-Mail-Adresse ausgestattet ist.<\/p>\n<p>Dies geschieht durch Durchlaufen aller vorhandenen <b>Account<\/b>-Objekte und der Pr&uuml;fung, ob deren Eigenschaft <b>SmtpAdress <\/b>mit der &uuml;bergebenen E-Mail-Adresse &uuml;bereinstimmt.<\/p>\n<p>Ist dies der Fall, wird die Eigenschaft <b>SendUsingAccount <\/b>f&uuml;r das <b>MailItem<\/b>-Objekt auf das entsprechende <b>Account<\/b>-Objekt eingestellt:<\/p>\n<pre>Public Property Let Von(strFrom As String)\r\n    Dim objAccount As Outlook.Account\r\n    For Each objAccount In _\r\n         objOutlook.Session.Accounts\r\n        If objAccount.SmtpAddress = strFrom Then\r\n            objMail.SendUsingAccount = objAccount\r\n            Exit Property\r\n        End If\r\n    Next objAccount\r\n    m_Von = strFrom\r\n    MsgBox &quot;Outlook-Account mit der Mailadresse ''&quot; &amp; strFrom &amp; &quot;'' nicht gefunden.&quot;<\/pre>\n<p>End Property <\/p>\n<p><b>Absender, Empf&auml;nger und Attachments hinzuf&uuml;gen<\/b><\/p>\n<p>Bei Absender und Empf&auml;nger (<b>To<\/b>, <b>CC<\/b>, <b>BCC<\/b>) sollte man meinen, dass dies ebenso abl&auml;uft. Allerdings kann man ja f&uuml;r jede dieser Eigenschaften mehrerer Empf&auml;nger zuweisen.<\/p>\n<p>Damit dies nicht zu Problemen f&uuml;hrt, weil die Daten mit dem falschen Trennzeichen &uuml;bergeben werden, sollen die drei Methoden <b>AnHinzufuegen<\/b>, <b>CCHinzufuegen <\/b>und <b>BCCHinzufuegen <\/b>jeweils eine Adresse entgegennehmen und diese per Semikolon getrennt an die gegebenenfalls bereits vorhandenen in den Eigenschaften <b>To<\/b>, <b>CC <\/b>und <b>BCC <\/b>gespeicherten Werte anh&auml;ngen:<\/p>\n<pre>Public Sub AnHinzufuegen(strTo As String)\r\n    objMail.To = objMail.To &amp; &quot;;&quot; &amp; strTo\r\nEnd Sub\r\nPublic Sub CCHinzufuegen(strCC As String)\r\n    objMail.CC = objMail.CC &amp; &quot;;&quot; &amp; strCC\r\nEnd Sub\r\nPublic Sub BCCHinzufuegen(strBCC As String)\r\n    objMail.BCC = objMail.BCC &amp; &quot;;&quot; &amp; strBCC\r\nEnd Sub<\/pre>\n<p><b>Anhang hinzuf&uuml;gen<\/b><\/p>\n<p>Auch Anh&auml;nge m&uuml;ssen separat hinzugef&uuml;gt werden. Dies gelingt mit der Methode <b>AnhangHinzufuegen<\/b>, die schlicht den Dateinamen der hinzuzuf&uuml;genden Datei erwartet und diesen der <b>Add<\/b>-Methode der <b>Attachments<\/b>-Auflistung des <b>MailItem<\/b>-Objekts &uuml;bergibt:<\/p>\n<pre>Public Sub AnhangHinzufuegen(strAttachment As String)\r\n    objMail.Attachments.Add strAttachment\r\nEnd Sub<\/pre>\n<p><b>Empfangsbest&auml;tigung und Priorit&auml;t<\/b><\/p>\n<p>Die beiden Eigenschaften <b>Empfangsbestaetigung<\/b> und <b>Wichtigkeit <\/b>hingegen werden durch einfache <b>Property Let<\/b>-Prozeduren implementiert. <b>Empfangsbestaetigung <\/b>erwartet einen <b>Boolean<\/b>-Wert, der angibt, ob eine Empfangsbest&auml;tigung angefordert werden soll. Dieser Wert wird an die Eigenschaft <b>ReadReceiptRequested <\/b>des <b>MailItem<\/b>-Objekts &uuml;bergeben:<\/p>\n<pre>Public Property Let Empfangsbestaetigung(bolReadReceiptRequested As Boolean)\r\n    objMail.ReadReceiptRequested = bolReadReceiptRequested\r\nEnd Property<\/pre>\n<p>Bei der Priorit&auml;t wird hingegen ein <b>Integer<\/b>-Wert &uuml;bergeben, der einem der Werte der Enumeration <b>olImportance <\/b>entspricht (mit den Werten <b>olImportanceHigh<\/b>, <b>olImportanceLow<\/b>, <b>olImportanceNormal<\/b>). Dieser landet in der Eigenschaft <b>Importance<\/b>:<\/p>\n<pre>Public Property Let Wichtigkeit(intImportance As OlImportance)\r\n    objMail.Importance = intImportance\r\nEnd Property<\/pre>\n<p><b>Zielordner f&uuml;r gesendete E-Mails festlegen<\/b><\/p>\n<p>Mit der <b>Public Property Let<\/b>-Prozedur <b>Zielordner <\/b>k&ouml;nnen Sie den Ordner festlegen, in dem die gesendete Nachricht gespeichert werden soll. Normalerweise landen diese ja einfach im Gesendete Objekte-Ordner. Wer ein wenig Ordnung liebt, speichert etwa alle E-Mails, die an Kunden versendet wurden, gleich in einem anderen Ordner unter Outlook.<\/p>\n<p>Die Prozedur aus <span class=\"verweis-ohneumbruch\"><a href=\"#anker-61-anchor\">Listing 3<\/a><\/span> erwartet den Namen des Zielordners als Parameter. Sie stellt zun&auml;chst das <b>Folder<\/b>-Objekt <b>objOrdnerGesendet <\/b>auf den Standardordner f&uuml;r gesendete E-Mails ein.<\/p>\n<p class=\"listingueberschrift\">Listing 3: Festlegen des Zielordners f&uuml;r gesendete Objekte<\/p>\n<pre>Public Property Let Zielordner(strFolder As String)\r\n    Dim objOrdnerGesendet As Outlook.Folder\r\n    Dim objOrdnerZiel As Outlook.Folder\r\n    Dim i As Integer\r\n    Set objOrdnerGesendet = objOutlook.Session.GetDefaultFolder(olFolderSentMail)\r\n    On Error Resume Next\r\n    Set objOrdnerZiel = objOrdnerGesendet.Folders(strFolder)\r\n    If objOrdnerZiel Is Nothing Then\r\n         Set objOrdnerZiel = objOrdnerGesendet\r\n        For i = LBound(Split(strFolder, &quot;\/&quot;)) To UBound(Split(strFolder, &quot;\/&quot;))\r\n            Set objOrdnerZiel = objOrdnerZiel.Folders.Add(Split(strFolder, &quot;\/&quot;)(i))\r\n            Set objOrdnerZiel = objOrdnerZiel.Folders(Split(strFolder, &quot;\/&quot;)(i))\r\n        Next i\r\n    End If\r\n    On Error GoTo 0\r\n    Set objMail.SaveSentMessageFolder = objOrdnerZiel\r\nEnd Property<\/pre>\n<p>Danach versucht sie, den angegebenen Unterordner direkt zu referenzieren. Gelingt dies nicht, l&ouml;st dies normalerweise einen Fehler aus, der aber durch das vorherige Deaktivieren der Fehlerbehandlung ausbleibt.<\/p>\n<p>Daf&uuml;r bleibt dann zumindest die Variable <b>objOrdnerZiel <\/b>leer, welcher der gesuchte Ordner zugewiesen werden sollte.<\/p>\n<p>Ist der Ordner noch nicht vorhanden, legt die Prozedur alle Unterordner an &#8211; oder versucht es zumindest.<\/p>\n<p>Wenn etwa der Ordner <b>test\/test\/test <\/b>erzeugt werden soll, legt die ermittelt die Prozedur zun&auml;chst den obersten anzulegenden Ordner in der Hierarchie und erzeugt diesen.<\/p>\n<p>Ob dies scheitert, weil der Ordner bereits vorhanden ist, spielt keine Rolle &#8211; in diesem Fall wird der bereits vorhandene Ordner referenziert.<\/p>\n<p><b>Weitere E-Mail anlegen<\/b><\/p>\n<p>Wie bereits in den Beispielen gezeigt, k&ouml;nnen Sie mit der Klasse auch mehrere E-Mails versenden, ohne die Klasse jedes Mal neu zu instanzieren und somit auch die Outlook-Instanz erneut zu instanzieren beziehungsweise eine vorhandene Instanz zu referenzieren. Dazu m&uuml;ssen Sie nur die Methode <b>NeueMail <\/b>der aktiven Instanz der Klasse <b>clsMail <\/b>aufrufen, die wie folgt aussieht und schlicht ein neues <b>MailItem<\/b>-Objekt erstellt:<\/p>\n<pre>Public Sub NeueMail()\r\n    Set objMail = Nothing\r\n    Set objMail = objOutlook.CreateItem(olMailitem)\r\nEnd Sub<\/pre>\n<p><b>E-Mail senden oder anzeigen<\/b><\/p>\n<p>Normalerweise werden Sie eine E-Mail gleich versenden wollen. Dies erledigen Sie mit der Senden-Methode, die wie folgt implementiert ist:<\/p>\n<pre>Public Sub Senden()\r\n    objMail.Send\r\n    m_Gesendet = True\r\nEnd Sub<\/pre>\n<p>Diese Methode stellt nach dem Versenden die in der privat deklarierten Variablen gespeicherte Eigenschaft <b>Gesendet <\/b>auf den Wert <b>True <\/b>ein.<\/p>\n<p>Manchmal m&ouml;chsten Sie sich aber vielleicht nur die Arbeit vereinfachen und eine E-Mail aus der Anwendung heraus mit dem passenden Adressaten und gegebenenfalls einer Betreff\/Inhaltsvorlage versehen, um diese vor dem Versenden noch zu bearbeiten. Dann zeigen Sie die E-Mail einfach nur an, und zwar mit der <b>Anzeigen<\/b>-Methode:<\/p>\n<pre>Public Sub Anzeigen()\r\n    objMail.Display True\r\nEnd Sub<\/pre>\n<p>Die E-Mail wird in Outlook ge&ouml;ffnet und angezeigt, der Code wird solange angehalten, bis die E-Mail durch Anklicken der <b>Senden<\/b>-Schaltfl&auml;che auf den Weg gebracht wurde.<\/p>\n<p>Schlie&szlig;lich l&ouml;st die Klasse beim Zerst&ouml;ren (beispielsweise mit <b>Set objMail = Nothing<\/b>) noch die folgende Ereignisprozedur aus:<\/p>\n<pre>Private Sub Class_Terminate()\r\n    Set objMail = Nothing\r\n    Set objOutlook = Nothing\r\nEnd Sub<\/pre>\n<p>Dies leert schlicht die Objektvariablen <b>objMail <\/b>und <b>objOutlook<\/b>.<\/p>\n<p><b>Maildaten nach dem Versenden speichern<\/b><\/p>\n<p>Die mit den Eigenschaften beziehungsweise Methoden der Klasse <b>clsMail <\/b>zugewiesenen Daten werden immer direkt an das durch die Klasse erzeugte <b>MailItem<\/b>-Objekt weitergeleitet. Dennoch ben&ouml;tigen wir einige privat deklarierte Variablen. Wozu Nun: Die Klasse soll die gegebenenfalls nach dem Anzeigen und vor dem Versenden ge&auml;nderten Inhalte der E-Mail f&uuml;r die weitere Verwendung bereithalten.<\/p>\n<p>Da wir nach dem Versenden keinen Zugriff mehr auf die E-Mail mehr haben, speichern wir diese vor dem Versenden in den folgenden Variablen:<\/p>\n<pre>Private m_Subject As String\r\nPrivate m_Body As String\r\nPrivate m_Von As String\r\nPrivate m_To As String\r\nPrivate m_CC As String\r\nPrivate m_BCC As String\r\nPrivate m_EntryID As String\r\nPrivate m_Gesendet As Boolean<\/pre>\n<p>Die entsprechenden, f&uuml;r die Abfrage der Werte dieser privat deklarierten Variablen vorgesehenen <b>Property Get<\/b>-Prozeduren sehen wie folgt aus:<\/p>\n<pre>Public Property Get Gesendet() As Boolean\r\n    Gesendet = m_Gesendet\r\nEnd Property\r\nPublic Property Get An() As String\r\n    An = m_To\r\nEnd Property\r\nPublic Property Get BCC() As String\r\n    BCC = m_BCC\r\nEnd Property\r\nPublic Property Get MailItem() As MailItem\r\n    Set MailItem = objMail\r\nEnd Property\r\nPublic Property Get Inhalt() As String\r\n    Inhalt = m_Body\r\nEnd Property\r\nPublic Property Get Betreff() As String\r\n    Betreff = m_Subject\r\nEnd Property\r\nPublic Property Get MailID() As String\r\n    MailID = m_EntryID\r\nEnd Property\r\nPublic Property Get Von() As String\r\n    Von = m_Von\r\nEnd Property\r\nPublic Property Get CC() As String\r\n    CC = m_CC\r\nEnd Property<\/pre>\n<p>Wie aber k&ouml;nnen Sie daf&uuml;r sorgen, dass die Daten genau beim Versenden der E-Mail in diese Variablen geschrieben werden Dies erledigen Sie mit einer Ereignisprozedur, die durch das Ereignis Send des <b>MailItem<\/b>-Objekts ausgel&ouml;st wird:<\/p>\n<pre>Private Sub objMail_Send(Cancel As Boolean)\r\n    m_Body = objMail.Body\r\n    m_Subject = objMail.Subject\r\n    m_EntryID = objMail.EntryID\r\n    m_Von = objMail.Recipients.Item(1).Address\r\n    m_To = objMail.To\r\n    m_CC = objMail.CC\r\n    m_BCC = objMail.BCC\r\n    m_Gesendet = True\r\nEnd Sub<\/pre>\n<p><b>Einschr&auml;nkungen mit &auml;lteren Outlook-Versionen<\/b><\/p>\n<p>Zwischen den einzelnen Outlook-Versionen gibt es einige Unterschiede, die daf&uuml;r sorgen, dass die Klasse in Access-Versionen &auml;lter als 2010 nicht wie hier beschrieben eingesetzt werden kann.<\/p>\n<p>Sie erhalten jedoch Informationen, welche &auml;nderungen n&ouml;tig sind, damit die Klasse auch in Access 2007 und &auml;lter funktioniert.<\/p>\n<ul>\n<li class=\"aufz-hlung\"><b>Outlook 2007<\/b>: Hier funktionieren alle Features der Anwendung. Sie m&uuml;ssen gegebenenfalls den Verweis auf die Outlook-Bibliothek auf den Eintrag <b>Microsoft Outlook 12.0 Object Library <\/b>einstellen.<\/li>\n<li class=\"aufz-hlung\"><b>Outlook 2003<\/b>: Einzige Einschr&auml;nkung ist die fehlende M&ouml;glichkeit, den Absender per VBA einzustellen. Au&szlig;erdem muss der Verweis f&uuml;r die Outlook-Bibliothek auf den Eintrag <b>Microsoft Outlook 11.0 Object Library <\/b>eingestellt werden. Au&szlig;erdem gibt es hier das Folder-Objekt noch nicht, es kann jedoch f&uuml;r unsere Belange gleichwertig durch das MAPIFolder-Objekt ersetzt werden.<\/li>\n<\/ul>\n<p>Warum die Verweisprobleme nicht einfach durch den Einsatz von Late Binding umschiffen Weil Ereignisse wie <b>objMail_Send <\/b>nur mit dem Schl&uuml;sselwort <b>WithEvents <\/b>bei der Deklaration des <b>MailItem<\/b>-Objekts unterst&uuml;tzt werden und somit Early Binding mit entsprechendem Verweis n&ouml;tig ist.<\/p>\n<p><b>Notwendige &auml;nderungen f&uuml;r Access 2003<\/b><\/p>\n<p>Die &auml;nderungen zum Verf&uuml;gbarmachen des Codes f&uuml;r Access 2003 sind schnell durchgef&uuml;hrt.<\/p>\n<p>Zun&auml;chst ersetzen Sie in der <b>Property Get<\/b>-Prozedur Zielordner in der Deklaration das Objekt <b>Folder <\/b>durch <b>MAPIFolder<\/b>, sodass die ersten Zeilen dieser Prozeduren wie folgt aussehen:<\/p>\n<pre>Public Property Let Zielordner(strFolder As String)\r\n    Dim objOrdnerGesendet As Outlook.MAPIFolder\r\n    Dim objOrdnerZiel As Outlook.MAPIFolder\r\n    ...<\/pre>\n<p>Au&szlig;erdem m&uuml;ssen Sie die <b>Property Let<\/b>-Prozedur <b>Von <\/b>auskommentieren:<\/p>\n<pre>Public Property Let Von(strFrom As String)\r\n    ...<\/pre>\n<p><b>Zusammenfassung und Ausblick<\/b><\/p>\n<p>Wenn Sie gelegentlich Funktionen zum Versand von E-Mails aus Outlook heraus in Ihre VBA-Routinen integrieren, sollten Sie sich die Klasse <b>clsMail <\/b>ansehen. Diese bietet einen einfachen Zugriff auf die Outlook-Objektbibliothek und erlaubt die Nutzung der typischen E-Mail-Funktionen.<\/p>\n<p>Haben Sie Vorschl&auml;ge f&uuml;r Erweiterungen Teilen Sie uns diese einfach mit, und zwar unter <b>info@access-im-unternehmen.de<\/b>.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>MailsMitKlasse2010.mdb<\/p>\n<p>MailsMitKlasse2003.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/{F27FF977-B1B4-446C-8039-3BA63B31D86F}\/aiu_859.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das Versenden von E-Mails mit Access ist eines der besten Beispiele f&uuml;r die Interaktion von Access mit anderen Office-Komponenten. Es gibt zahlreiche Anwendungsf&auml;lle f&uuml;r das Versenden von E-Mails von einer Datenbank-Anwendung aus &#8211; egal, ob es sich nun um Anschreiben an Kunden, an Serien-E-Mails oder auch an E-Mails zum Versenden von Fehlermeldungen handelt. Grund genug, diese Funktion einmal in eine eigene Klasse auszulagern, die Sie dann ganz einfach in die Zielanwendung importieren und direkt einsetzen k&ouml;nnen.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662012,66062012,44000026],"tags":[],"class_list":["post-55000859","post","type-post","status-publish","format-standard","hentry","category-662012","category-66062012","category-Interaktiv"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Outlook-Mails mit Klasse - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/OutlookMails_mit_Klasse\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Outlook-Mails mit Klasse\" \/>\n<meta property=\"og:description\" content=\"Das Versenden von E-Mails mit Access ist eines der besten Beispiele f&uuml;r die Interaktion von Access mit anderen Office-Komponenten. Es gibt zahlreiche Anwendungsf&auml;lle f&uuml;r das Versenden von E-Mails von einer Datenbank-Anwendung aus - egal, ob es sich nun um Anschreiben an Kunden, an Serien-E-Mails oder auch an E-Mails zum Versenden von Fehlermeldungen handelt. Grund genug, diese Funktion einmal in eine eigene Klasse auszulagern, die Sie dann ganz einfach in die Zielanwendung importieren und direkt einsetzen k&ouml;nnen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/OutlookMails_mit_Klasse\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-22T21:49:08+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg05.met.vgwort.de\/na\/7567afaab2074f52bec75d34c18d1c5d\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"17\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_mit_Klasse\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_mit_Klasse\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Outlook-Mails mit Klasse\",\"datePublished\":\"2020-05-22T21:49:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_mit_Klasse\\\/\"},\"wordCount\":2573,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_mit_Klasse\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/7567afaab2074f52bec75d34c18d1c5d\",\"articleSection\":[\"2012\",\"6\\\/2012\",\"Interaktiv\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_mit_Klasse\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_mit_Klasse\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_mit_Klasse\\\/\",\"name\":\"Outlook-Mails mit Klasse - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_mit_Klasse\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_mit_Klasse\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/7567afaab2074f52bec75d34c18d1c5d\",\"datePublished\":\"2020-05-22T21:49:08+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_mit_Klasse\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_mit_Klasse\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_mit_Klasse\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/7567afaab2074f52bec75d34c18d1c5d\",\"contentUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/7567afaab2074f52bec75d34c18d1c5d\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_mit_Klasse\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Outlook-Mails mit Klasse\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Outlook-Mails mit Klasse - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/OutlookMails_mit_Klasse\/","og_locale":"de_DE","og_type":"article","og_title":"Outlook-Mails mit Klasse","og_description":"Das Versenden von E-Mails mit Access ist eines der besten Beispiele f&uuml;r die Interaktion von Access mit anderen Office-Komponenten. Es gibt zahlreiche Anwendungsf&auml;lle f&uuml;r das Versenden von E-Mails von einer Datenbank-Anwendung aus - egal, ob es sich nun um Anschreiben an Kunden, an Serien-E-Mails oder auch an E-Mails zum Versenden von Fehlermeldungen handelt. Grund genug, diese Funktion einmal in eine eigene Klasse auszulagern, die Sie dann ganz einfach in die Zielanwendung importieren und direkt einsetzen k&ouml;nnen.","og_url":"https:\/\/access-im-unternehmen.de\/OutlookMails_mit_Klasse\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-22T21:49:08+00:00","og_image":[{"url":"http:\/\/vg05.met.vgwort.de\/na\/7567afaab2074f52bec75d34c18d1c5d","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"17\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/OutlookMails_mit_Klasse\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/OutlookMails_mit_Klasse\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Outlook-Mails mit Klasse","datePublished":"2020-05-22T21:49:08+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/OutlookMails_mit_Klasse\/"},"wordCount":2573,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/OutlookMails_mit_Klasse\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/7567afaab2074f52bec75d34c18d1c5d","articleSection":["2012","6\/2012","Interaktiv"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/OutlookMails_mit_Klasse\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/OutlookMails_mit_Klasse\/","url":"https:\/\/access-im-unternehmen.de\/OutlookMails_mit_Klasse\/","name":"Outlook-Mails mit Klasse - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/OutlookMails_mit_Klasse\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/OutlookMails_mit_Klasse\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/7567afaab2074f52bec75d34c18d1c5d","datePublished":"2020-05-22T21:49:08+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/OutlookMails_mit_Klasse\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/OutlookMails_mit_Klasse\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/OutlookMails_mit_Klasse\/#primaryimage","url":"http:\/\/vg05.met.vgwort.de\/na\/7567afaab2074f52bec75d34c18d1c5d","contentUrl":"http:\/\/vg05.met.vgwort.de\/na\/7567afaab2074f52bec75d34c18d1c5d"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/OutlookMails_mit_Klasse\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Outlook-Mails mit Klasse"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000859","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55000859"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000859\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000859"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000859"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000859"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}