{"id":55000464,"date":"2025-04-01T00:00:00","date_gmt":"2025-07-02T14:49:42","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=464"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\/","title":{"rendered":"Microsoft 365-Mail mit Make und VBA ohne Outlook"},"content":{"rendered":"<p><b>Am liebsten w&auml;re den meisten Microsoft-Anwendern vermutlich, wenn sie einfach ihre vorhandenen VBA-Automationen auf Basis von Microsoft Outlook verwenden k&ouml;nnten. Allerdings zeigt Microsoft aktuell kein Zeichen, dass das klassische Outlook f&uuml;r Desktop mit seiner VBA-Programmierbarkeit  &uuml;ber das Jahr 2029 hinaus unterst&uuml;tzt werden wird. Die neue Outlook-Version ist allerdings noch nicht so weit, dass wir damit so arbeiten k&ouml;nnen, wie es mit der klassischen Version m&ouml;glich ist. Genau genommen wird das, wenn man sich die Pl&auml;ne von Microsoft ansieht, auch zumindest per VBA nicht mehr m&ouml;glich sein. Um zumindest das Versenden von E-Mails von VBA aus zu realisieren, ben&ouml;tigen wir also eine Alternative. In diesem Artikel schauen wir uns an, wie wir Outlook.com &uuml;ber den Automatisierungdienst Make dazu bringen, E-Mails zu versenden &#8211; mit allen Funktionen, die wir von Outlook gewohnt sind.<\/b><\/p>\n<p>Microsoft Access und Microsoft Outlook in der klassischen Version sind ein gro&szlig;artiges Gespann. Wer von Access aus per VBA eine E-Mail versenden wollte, konnte dies mit wenigen Zeilen Code realisieren. Outlook starten (wenn auch unsichtbar), ein neues <b>MailItem<\/b>-Objekt erstellen, Betreff, Inhalt und gegebenenfalls noch Anlagen und weitere Eigenschaften einstellen und los geht es. Die so vorbereitete E-Mail k&ouml;nnen wir mit der <b>Send<\/b>-Methode direkt absenden oder mit der <b>Display<\/b>-Methode so &ouml;ffnen, als ob wir die E-Mail soeben selbst erstellt h&auml;tten &#8211; und brauchen dann nur noch auf <b>Senden <\/b>zu klicken, nachdem wir den Entwurf gegebenenfalls noch angepasst haben.<\/p>\n<p>In Zukunft k&ouml;nnen wir verschiedene Alternativen nutzen:<\/p>\n<ul>\n<li>E-Mails unter Versendung der Bibliothek CDO versenden: Das ist jedoch aufwendig, weil sich die Parameter je nach dem zu verwendenden E-Mail-Anbieter unterscheiden. Au&szlig;erdem ist auch diese Bibliothek bereits abgek&uuml;ndigt.<\/li>\n<li>E-Mails mit der Graph-API von Microsoft versenden: Dies haben wir uns bereits in einem Artikel in Access im Unternehmen angesehen &#8211; <b>Mails senden mit der Microsoft Graph API <\/b>(<b>www.access-im-unternehmen.de\/1532<\/b>). Allerdings ist es sehr aufwendig, dies zu realisieren, da sehr viel Vorbereitung notwendig ist &#8211; speziell f&uuml;r die Authentifizierung am entsprechenden Outlook-Konto.<\/li>\n<li>Office-JavaScript-API: Es soll auch f&uuml;r das neue Outlook eine API geben. Allerdings ist hier noch unklar, ob und wie man damit Mails mit VBA erstellen und verschicken kann.<\/li>\n<\/ul>\n<h2>Make.com als Schnittstelle<\/h2>\n<p>Also zeigen wir, wie wir mit alternativen Techniken E-Mails &uuml;ber Outlook.com versenden k&ouml;nnen &#8211; und dazu mit Make.com ein Tool zur Workflow-Automation nutzen.<\/p>\n<p>Im Artikel <b>Automation mit VBA und Make <\/b>(<b>www.vbentwickler.de\/463<\/b>) haben wir bereits gezeigt, wie wir Make.com von VBA aus ansteuern k&ouml;nnen. Dort haben wir uns angesehen, wie man ein Automations-Scenario anlegen, wie wir dieses von VBA aus starten und wie das Ergebnis der Automation abgefragt und ausgewertet werden kann.<\/p>\n<p>Auf den dort beschriebenen Techniken setzen wir nun auf und wollen darin den Versand einer E-Mail mit Outlook.com einbetten.<\/p>\n<p>Warum aber sollten wir dazu <b>Make.com <\/b>nutzen und nicht &uuml;ber die Microsoft Graph API auf Outlook.com zugreifen? Weil auch hier die Authentifizierung relativ aufwendig zu realisieren ist und <b>Make.com <\/b>uns dabei eine Menge Arbeit abnimmt.<\/p>\n<p>Wir gehen dabei in den folgenden Schritten vor:<\/p>\n<ul>\n<li>Programmierung des Mailversands in Make.com<\/li>\n<li>Aufruf des Mailversands in eine VBA-Prozedur<\/li>\n<\/ul>\n<h2>Mails versenden in Make.com<\/h2>\n<p>Zun&auml;chst programmieren wir einen Mailversand in <b>Make.com<\/b>, ohne dass wir Betreff, Inhalt, Empf&auml;nger und so weiter von VBA aus &uuml;bergeben.<\/p>\n<p>Wie wir ein <b>Make.com<\/b>-Konto anlegen und wie wir grunds&auml;tzlich Scenarios anlegen und damit arbeiten, haben wir im oben genannten Artikel beschrieben.<\/p>\n<p>Dazu legen wir in <b>Make.com <\/b>ein neues Scenario an, indem wir auf der Seite <b>All scenarios <\/b>auf <b>Create a new scenario <\/b>klicken. Im neuen Scenario &auml;ndern wir den Namen gleich oben links auf <b>Mail mit Outlook.com senden <\/b>(siehe Bild 1).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_02\/pic_464_003.png\" alt=\"Scenario umbenennen\" width=\"549,6265\" height=\"244,2785\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Scenario umbenennen<\/span><\/b><\/p>\n<p>Danach f&uuml;gen wir den Trigger ein. Wir wollen den Mailversand per VBA ansto&szlig;en, wozu wir ein <b>XMLHTTP60<\/b>-Objekt nutzen werden.<\/p>\n<p>Dazu ben&ouml;tigen wir ein <b>Webhook<\/b>-Element als Trigger, das wir nun hinzuf&uuml;gen. Dazu klicken wir auf das gro&szlig;e Plus-Icon im Scenario und w&auml;hlen <b>Webhook|Custom webhook <\/b>aus. Hier klicken wir nun auf <b>Add<\/b>, um einen neuen Hook hinzuzuf&uuml;gen (siehe Bild 2).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_02\/pic_464_002.png\" alt=\"Trigger hinzuf&uuml;gen und Hook anlegen\" width=\"549,6265\" height=\"260,8792\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Trigger hinzuf&uuml;gen und Hook anlegen<\/span><\/b><\/p>\n<p>Anschlie&szlig;end legen wir den Namen des Webhooks fest und speichern diesen mit <b>Save<\/b> (siehe Bild 3).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_02\/pic_464_004.png\" alt=\"Name des Webhooks festlegen\" width=\"424,6267\" height=\"368,0098\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Name des Webhooks festlegen<\/span><\/b><\/p>\n<p>Die URL des Webhooks speichern wir in der Zwischenablage und f&uuml;gen diese dann in einem Browser ein. Nach dem Bet&auml;tigen der Eingabetaste sollte der Text <b>Accepted <\/b>erscheinen.<\/p>\n<p>Das erste Element des Scenarios k&ouml;nnen wir damit speichern.<\/p>\n<h2>Aktion zum Versenden von E-Mails hinzuf&uuml;gen<\/h2>\n<p>Nun klicken wir auf das Plus-Zeichen rechts vom Trigger-Element. Im Popup suchen wir den Eintrag <b>Microsoft 365 Email (Outlook)<\/b> (siehe Bild 4).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_02\/pic_464_005.png\" alt=\"Microsoft 365 E-Mail (Outlook)-Aktion hinzuf&uuml;gen\" width=\"649,627\" height=\"330,8847\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Microsoft 365 E-Mail (Outlook)-Aktion hinzuf&uuml;gen<\/span><\/b><\/p>\n<p>Nach dem Anklicken erscheinen alle Aktionen, die diese App bereitstellt. Wir sehen gleich, dass wir eine ganze Menge Aktionen durchf&uuml;hren k&ouml;nnen, die mit E-Mails in Microsoft 365 Mail zu tun haben.<\/p>\n<p>Uns interessiert jedoch zun&auml;chst die Aktion <b>Create and Send a Message <\/b>(siehe Bild 5).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_02\/pic_464_007.png\" alt=\"Aktion zum Versenden einer E-Mail ausw&auml;hlen\" width=\"424,6267\" height=\"488,7725\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Aktion zum Versenden einer E-Mail ausw&auml;hlen<\/span><\/b><\/p>\n<h2>Verbindung zu Microsoft 365 herstellen<\/h2>\n<p>Klicken wir diese an, wird diese Aktion angelegt und es erscheint ein Popup zur Auswahl oder zum Anlegen der Connection zu <b>Microsoft 365<\/b> (siehe Bild 6).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_02\/pic_464_010.png\" alt=\"Ausw&auml;hlen oder Hinzuf&uuml;gen der Connection\" width=\"599,6265\" height=\"261,3367\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Ausw&auml;hlen oder Hinzuf&uuml;gen der Connection<\/span><\/b><\/p>\n<p>An dieser Stelle gehen wir davon aus, dass Du bereits ein Microsoft 365-Konto hast. Da dieser vermutlich noch nicht als Connection zu <b>Make.com <\/b>hinzugef&uuml;gt ist, klicken wir hier auf die Schaltfl&auml;che <b>Add<\/b>.<\/p>\n<p>Im nun erscheinenden Popup geben wir eine Bezeichnung f&uuml;r die zu verwendende Connection an (siehe Bild 7). Eine Bezeichnung ist sinnvoll, weil wir gegebenenfalls mehrere Microsoft 365-Konten haben. Wenn wir diese noch in anderen Scenarios f&uuml;r den Versand von E-Mails nutzen wollen, finden wir die Connection schnell wieder, wenn wir einen aussagekr&auml;ftigen Namen vergeben haben. Wir verwenden hier zum Beispiel <b>Microsoft 365-Connection<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_02\/pic_464_011.png\" alt=\"Angeben einer Bezeichnung f&uuml;r die Connection\" width=\"424,6267\" height=\"351,9684\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Angeben einer Bezeichnung f&uuml;r die Connection<\/span><\/b><\/p>\n<p>Danach klicken wir unten auf <b>Save<\/b>.<\/p>\n<p>Es erscheint nun ein Microsoft-Dialog, wo wir nach der Authentifizierung die Berechtigungen von Make f&uuml;r den Zugriff auf unser Microsoft-Konto akzeptieren m&uuml;ssen (siehe Bild 8).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_02\/pic_464_012.png\" alt=\"Akzeptieren der Berechtigungen\" width=\"424,6267\" height=\"592,2425\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 8: Akzeptieren der Berechtigungen<\/span><\/b><\/p>\n<h2>Eigenschaften der E-Mail einstellen<\/h2>\n<p>Schlie&szlig;lich landen wir in dem Dialog <b>Microsoft 365 Email (Outlook) <\/b>aus Bild 9, in dem die zuvor gew&auml;hlte Connection bereits angezeigt wird.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_02\/pic_464_013.png\" alt=\"Anlegen einer Beispiel-E-Mail\" width=\"424,6267\" height=\"957,9215\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 9: Anlegen einer Beispiel-E-Mail<\/span><\/b><\/p>\n<p>Hier finden wir die &uuml;blichen Felder f&uuml;r das Verwenden einer E-Mail.<\/p>\n<p>Also tragen wir Werte in einige dieser Felder ein, zum Beispiel in <b>Subject<\/b>, <b>Body Content <\/b>und <b>To Recipients<\/b>. Noch sind diese Werte statisch, sp&auml;ter werden wir diese aus dem per VBA abgesetzten Aufruf entnehmen. Wir wollen allerdings erst einmal ausprobieren, ob das Versenden &uuml;berhaupt funktioniert.<\/p>\n<p>Nach dem Eingeben der Eigenschaften klicken wir auf die Schaltfl&auml;che <b>Save<\/b>.<\/p>\n<h2>Antwort-Element hinzuf&uuml;gen?<\/h2>\n<p>Im Beispiel aus dem oben genannten Artikel haben wir noch ein <b>Response<\/b>-Element angeh&auml;ngt, mit dem wir eine entsprechende Meldung zur&uuml;ckgegeben haben. Hier lohnt es sich eigentlich nicht, ein solches Element einzuf&uuml;gen &#8211; wenn wir die Connection korrekt aufgesetzt haben und die E-Mail-Daten korrekt gef&uuml;llt haben, sollten keine Fehler auftreten.<\/p>\n<p>Das kann jedoch dennoch der Fall sein, zum Beispiel wenn wir extern die Berechtigung f&uuml;r Make f&uuml;r den Zugriff auf Microsoft 365 entziehen. Dann sollte beim Versuch, im Kontext unserer Connection auf Microsoft 365 zuzugreifen, der Status 401 etc. zur&uuml;ckgeliefert werden.<\/p>\n<p>Leider k&ouml;nnen wir diesen Status aber nicht auslesen, da dieser vom Modul <b>Create and Send a Message <\/b>nicht weitergegeben wird. <\/p>\n<h2>Fehlerbehandlung einbauen<\/h2>\n<p>Allerdings gibt es auch in Make eine Fehlerbehandlung. Diese aktivieren wir, indem wir mit der rechten Maustaste auf das Modul <b>Create and Send a Message klicken <\/b>und dort den Befehl <b>Add error handler <\/b>aufrufen (siehe Bild 10).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_02\/pic_464_018.png\" alt=\"Hinzuf&uuml;gen einer Fehlerbehandlung\" width=\"424,6267\" height=\"416,6317\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 10: Hinzuf&uuml;gen einer Fehlerbehandlung<\/span><\/b><\/p>\n<p>Es erscheint ein neues Modul mit dem Plus-Zeichen, f&uuml;r das wir das Element <b>Webhooks|Webhook response <\/b>einf&uuml;gen. Hier klicken wir in das Feld <b>Body <\/b>und f&uuml;gen die Elemente aus der Auswahl wie in Bild 11 hinzu. Au&szlig;erdem stellen wir Status auf den Wert <b>410 <\/b>ein, der sonst normalerweise nicht verwendet wird.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_02\/pic_464_019.png\" alt=\"Hinzuf&uuml;gen einer Error-Response\" width=\"700\" height=\"265,3274\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 11: Hinzuf&uuml;gen einer Error-Response<\/span><\/b><\/p>\n<h2>Response im Erfolgsfall einbauen<\/h2>\n<p>Allerdings wollen wir auch noch eine Response einbauen, die beim erfolgreichen Mailversand ausgel&ouml;st wird und ein entsprechendes Ergebnis zur&uuml;ckliefert.<\/p>\n<p>Dazu klicken wir im <b>Create and Send a Message<\/b>-Modul auf das Pluszeichen rechts. Hier f&uuml;gen wir ein weiteres Element des Typs <b>Webhooks|Webhook response <\/b>hinzu. Diesmal stellen wir <b>Status <\/b>auf <b>201 <\/b>und <b>Body <\/b>auf  <b>Erfolgreich versendet <\/b>ein.<\/p>\n<p>Au&szlig;erdem benennen wir die beiden <b>Response<\/b>-Elemente auch direkt um in <b>Webhook Success <\/b>und <b>Webhook Error<\/b>.<\/p>\n<p>Anschlie&szlig;end sieht unser Scenario wie in Bild 12 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_02\/pic_464_020.png\" alt=\"Die Automation im &Uuml;berblick\" width=\"649,627\" height=\"419,2205\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 12: Die Automation im &Uuml;berblick<\/span><\/b><\/p>\n<h2>Ausf&uuml;hren des Mailversands<\/h2>\n<p>Bevor wir die Automation per VBA aufrufen wollen, testen wir diese einmal. Dazu klicken wir unten links im Make-Fenster in der Men&uuml;leiste auf <b>Run once<\/b> (siehe Bild 13) und dann auf <b>Wait for new data<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_02\/pic_464_017.png\" alt=\"Run once sorgt f&uuml;r das Lauschen auf einen Aufruf\" width=\"424,6267\" height=\"177,7142\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 13: Run once sorgt f&uuml;r das Lauschen auf einen Aufruf<\/span><\/b><\/p>\n<p>Dadurch lauscht die Automation auf einen Aufruf. Den f&uuml;hren wir aus, indem wir die Prozedur aus Listing 1 in unserer Access-Anwendung ausf&uuml;hren.<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>Microsoft365_MailVersenden()\r\n     <span style=\"color:blue;\">Dim <\/span>strWebhookURL<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>objXMLHTTP<span style=\"color:blue;\"> As <\/span>MSXML2.XMLHTTP60\r\n     <span style=\"color:blue;\">Dim <\/span>strJSON<span style=\"color:blue;\"> As String<\/span>\r\n     strWebhookURL = \"https:\/\/hook.eu2.make.com\/5yauwb5ehk63mudiohao3xf4mkc7lwe2\"\r\n     strJSON = \"\"\r\n     <span style=\"color:blue;\">Set<\/span> objXMLHTTP = <span style=\"color:blue;\">New<\/span> MSXML2.XMLHTTP60\r\n     objXMLHTTP.Open \"POST\", strWebhookURL, <span style=\"color:blue;\">False<\/span>\r\n     objXMLHTTP.setRequestHeader \"Content-Type\", \"application\/json\"\r\n     \r\n     objXMLHTTP.send strJSON\r\n     Select Case objXMLHTTP.status\r\n         <span style=\"color:blue;\">Case <\/span>201\r\n             <span style=\"color:blue;\">MsgBox<\/span> \"Erfolgreich gesendet.\"\r\n         <span style=\"color:blue;\">Case <\/span>200\r\n             <span style=\"color:blue;\">MsgBox<\/span> \"Erfolgreich aufgerufen, aber nicht gesendet.\"\r\n        <span style=\"color:blue;\">Case <\/span>400\r\n             <span style=\"color:blue;\">MsgBox<\/span> \"JSON ung&uuml;ltig.\"\r\n         <span style=\"color:blue;\">Case Else<\/span>\r\n             <span style=\"color:blue;\">MsgBox<\/span> \"Fehler beim Senden: \" & objXMLHTTP.status & \" - \" & objXMLHTTP.statusText\r\n     <span style=\"color:blue;\">End Select<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Die Prozedur f&uuml;hrt einen ersten Aufruf unserer Automation aus.<\/span><\/b><\/p>\n<p>Diese erfordert das Vorhandensein eines Verweises auf die Bibliothek <b>Microsoft XML, v6.0<\/b>. Im gleichen Zuge f&uuml;gen wir auch noch einen Verweis auf die Bibliothek <b>Microsoft Scripting Runtime<\/b> hinzu (siehe Bild 14).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_02\/pic_464_001.png\" alt=\"Verweise f&uuml;r das VBA-Projekt\" width=\"424,6267\" height=\"334,749\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 14: Verweise f&uuml;r das VBA-Projekt<\/span><\/b><\/p>\n<p>Die Prozedur enth&auml;lt f&uuml;r die Variable <b>strWebhookURL <\/b>die URL, die wir im Element <b>Webhooks|Custom Webhook <\/b>finden. Diese &uuml;bergeben wir der <b>open<\/b>-Methode des <b>XMLHTTP60<\/b>-Objekts.<\/p>\n<p>Danach senden wir die Anfrage mit der <b>send<\/b>-Methode ab. Dabei verwenden wir als Parameter die noch mit einer leeren Zeichenkette gef&uuml;llte Variable <b>strJSON<\/b>. Sp&auml;ter nutzen wir diese, um Informationen wie den Empf&auml;nger der E-Mail, Betreff und Inhalt zu &uuml;bergeben.<\/p>\n<p>Danach werten wir den zur&uuml;ckgelieferten Status aus. Dieser kann verschiedene Werte liefern:<\/p>\n<ul>\n<li><b>200<\/b>: Wird geliefert, wenn der Aufruf an sich erfolgreich war, aber keines der beiden <b>Response<\/b>-Element erreicht wurde. Tritt zum Beispiel auf, wenn man das Scenario nicht gestartet hat. Die Adresse ist dann g&uuml;ltig, aber es gibt nur die allgemeine Erfolgsmeldung.<\/li>\n<li><b>201<\/b>: Bedeutet, dass die E-Mail erfolgreich versendet wurde.<\/li>\n<li><b>410<\/b>: Der R&uuml;ckgabewert f&uuml;r einen Fehler, den wir mit dem <b>Response<\/b>-Element der Fehlerbehandlung definiert haben.<\/li>\n<li><b>400<\/b>: Gesendetes JSON-Dokument ist ung&uuml;ltig.<\/li>\n<\/ul>\n<p>Diese m&ouml;glichen Werte adressieren wir in der <b>Select Case<\/b>-Bedingung. <\/p>\n<h2>N&auml;chster Schritt: Dynamische E-Mail-Daten<\/h2>\n<p>Nun wird es interessant. Wir wollen nun mit der Variablen <b>strJSON <\/b>die Informationen zusammentragen, die f&uuml;r das Versenden der E-Mail verwendet werden sollen &#8211; zun&auml;chst die E-Mail-Adresse des Empf&auml;ngers, der Betreff und der Inhalt der E-Mail.<\/p>\n<p>Dabei k&ouml;nnen wir ein einfaches, aus Name-Wert-Paaren bestehendes JSON-Dokument nutzen.<\/p>\n<p>Dieses stellen wir wie folgt zusammen:<\/p>\n<pre>strJSON = \"{\"\"to\"\":\"\"\" & strTo & \"\"\",\"\"subject\"\":\"\"\" _\r\n     & strSubject & \"\"\",\"\"body\"\":\"\"\" & strBody & \"\"\"}\"<\/pre>\n<p>Den Inhalt der Variablen wollen wir per Parameter an unsere Prozedur &uuml;bergeben, daher &auml;ndern wir die erste Zeile wie folgt:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>Microsoft365_MailVersenden(strTo<span style=\"color:blue;\"> As String<\/span>, _\r\n         strSubject<span style=\"color:blue;\"> As String<\/span>, strBody<span style=\"color:blue;\"> As String<\/span>)<\/pre>\n<p>Den Rest der Prozedur k&ouml;nnen wir vorerst beibehalten.<\/p>\n<p>Nun erledigen wir zwei Dinge:<\/p>\n<ul>\n<li>Wir starten erneut den Empfangsmodus der Automation. Diesmal dauerhaft, da wir noch weitere Aufrufe t&auml;tigen werden.<\/li>\n<li>Au&szlig;erdem schicken wir einmalig die Daten zu der Automation.<\/li>\n<\/ul>\n<h2>Automation dauerhaft aktivieren<\/h2>\n<p>Dazu aktivieren wir die Option <b>Immediately as data arrives <\/b>in Make (siehe Bild 15).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_02\/pic_464_021.png\" alt=\"Aktivieren der Automation\" width=\"424,6267\" height=\"70,90695\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 15: Aktivieren der Automation<\/span><\/b><\/p>\n<p>Danach erscheint die Meldung aus Bild 16, wo wir <b>Delete old data <\/b>w&auml;hlen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_02\/pic_464_022.png\" alt=\"L&ouml;schen alter Daten\" width=\"549,6265\" height=\"196,5384\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 16: L&ouml;schen alter Daten<\/span><\/b><\/p>\n<p>Schlie&szlig;lich w&auml;hlen wir noch aus, dass das Scenario immer sofort ausgef&uuml;hrt werden soll, wenn ein Aufruf eingeht. Dazu stellen wir in Bild 17 den Wert <b>Immediately <\/b>ein.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_02\/pic_464_023.png\" alt=\"Einstellen der Schedule settings\" width=\"424,6267\" height=\"188,723\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 17: Einstellen der Schedule settings<\/span><\/b><\/p>\n<p>Damit ist die Automation nun jederzeit empfangsbereit und wir k&ouml;nnen zum ersten Mal unser JSON-Dokument &uuml;bermitteln.<\/p>\n<p>Das erledigen wir mit dem Aufruf unserer Prozedur &uuml;ber eine weitere Routine (siehe Listing 2).<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>Test_MailSenden()\r\n     <span style=\"color:blue;\">Dim <\/span>strTo<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strSubject<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strBody<span style=\"color:blue;\"> As String<\/span>\r\n     strTo = \"andre@minhorst.com\"\r\n     strSubject = \"Beispielbetreff einer Mail\"\r\n     strBody = \"Lieber Andr&eacute;,\" & <span style=\"color:blue;\">vbCrLf<\/span> & <span style=\"color:blue;\">vbCrLf<\/span>\r\n     strBody = strBody & \"hier kommt eine Testmail.\" & <span style=\"color:blue;\">vbCrLf<\/span> & <span style=\"color:blue;\">vbCrLf<\/span>\r\n     strBody = strBody & \"Viele Gr&uuml;&szlig;e\" & <span style=\"color:blue;\">vbCrLf<\/span>\r\n     strBody = strBody & \"Klaus\"\r\n     <span style=\"color:blue;\">Call<\/span> Microsoft365_MailVersenden(strTo, strSubject, strBody)\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Prozedur zum Aufruf des Mailversands<\/span><\/b><\/p>\n<p>Wenn wir die Prozedur nun so aufrufen, erhalten wie den Fehler mit der Nummer 400.<\/p>\n<p>Das Problem ist, wie oben bereits angef&uuml;hrt, dass das JSON hier nicht korrekt formatiert ist. In diesem Fall liegt es an den enthaltenen Zeilenumbr&uuml;chen in der Variablen <b>strBody<\/b>. JSON kann mit Zeilenumbr&uuml;chen nicht viel anfangen. Sie m&uuml;ssen hier durch <b>\\n <\/b>ersetzt werden.<\/p>\n<p>Das erledigen wir, indem wir vor dem Zusammenstellen von <b>strJSON <\/b>noch die Zeilenumbr&uuml;che in <b>strBody <\/b>durch <b>\\n <\/b>ersetzen:<\/p>\n<pre>strBody = <span style=\"color:blue;\">Replace<\/span>(strBody, <span style=\"color:blue;\">vbCrLf<\/span>, \"\\n\")<\/pre>\n<p>Beim n&auml;chsten Aufruf erhalten wir die Meldung, dass die Mail erfolgreich versendet wurde. Wir k&ouml;nnen immer wieder mal im Posteingang pr&uuml;fen, ob die verschickten E-Mails auch tats&auml;chlich angekommen sind.<\/p>\n<p>Allerdings enthalten die neuesten Versuche immer noch nicht die Daten, die wir nun mit dem JSON-Dokument &uuml;bersendet haben. Der Grund ist einfach: Wir haben in unserem <b>Microsoft 365 Email<\/b>-Modul immer noch die statischen Elemente.<\/p>\n<p>Diese wollen wir nun ersetzen. Dazu klicken wir erst auf das <b>Microsoft 365 EMail<\/b>-Modul und dann beispielsweise auf das Feld <b>Subject<\/b>.<\/p>\n<p>Und siehe da: Es erscheint ein Popup mit Vorschl&auml;gen zum F&uuml;llen dieses Feldes und dort finden wir auch die Elemente <b>to<\/b>, <b>subject <\/b>und <b>body <\/b>vor (siehe Bild 18).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_02\/pic_464_024.png\" alt=\"Zuweisen der Parameter\" width=\"649,627\" height=\"397,6503\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 18: Zuweisen der Parameter<\/span><\/b><\/p>\n<p>Also ziehen wir hier das Element <b>subject <\/b>hinein, in <b>Body Content <\/b>f&uuml;gen wir <b>body <\/b>hinzu und in <b>To Recipients <\/b>den Parameter <b>to<\/b> (siehe Bild 19).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_02\/pic_464_025.png\" alt=\"Zuweisen weiterer Parameter\" width=\"424,6267\" height=\"666,7465\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 19: Zuweisen weiterer Parameter<\/span><\/b><\/p>\n<p>Hier sehen wir allerdings, dass wir auch noch den Namen des Empf&auml;ngers angeben k&ouml;nnen. Also speichern wir den Zwischenstand zun&auml;chst und erweitern dann unsere Zeile zum Zusammenstellen des JSON-Dokuments wie folgt:<\/p>\n<pre>strJSON = \"{\"\"to\"\":\"\"\" & strTo & \"\"\", \"\"toName\"\":\"\"\" & strToName & \"\"\",\"\"subject\"\":\"\"\" & strSubject & \"\"\",\"\"body\"\":\"\"\" & strBody & \"\"\"}\"<\/pre>\n<p>Dies ist eine L&ouml;sung f&uuml;r nur einen Adressaten &#8211; wir k&ouml;nnten theoretisch auch noch mehrere angeben. Das wollen wir im Rahmen dieses Artikels allerdings nicht tun.<\/p>\n<h2>JSON-Struktur in Make aktualisieren<\/h2>\n<p>Damit m&uuml;ssen wir die Struktur, die Make verarbeitet, allerdings einmal aktualisieren. Dazu klicken wir einmal auf das Modul <b>Webhooks|Custom webhook <\/b>und klicken dort auf die Schaltfl&auml;che <b>Redetermine data structure<\/b>. Das Modul zeigt seine Eigenschaften anschlie&szlig;end wie in Bild 20 an.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_02\/pic_464_026.png\" alt=\"Aktualisieren der Datenstruktur\" width=\"424,6267\" height=\"369,4804\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 20: Aktualisieren der Datenstruktur<\/span><\/b><\/p>\n<p>Nun m&uuml;ssen wir noch einmal auf <b>Run once <\/b>klicken und dann den VBA-Aufruf erneut starten.<\/p>\n<p>&Ouml;ffnen wir anschlie&szlig;end wieder das <b>Microsoft 365 Email<\/b>-Element, k&ouml;nnen wir hier nun auch das Element <b>toName <\/b>einf&uuml;gen (siehe Bild 21).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_02\/pic_464_027.png\" alt=\"Die fertig konfigurierte E-Mail\" width=\"424,6267\" height=\"723,235\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 21: Die fertig konfigurierte E-Mail<\/span><\/b><\/p>\n<h2>Zeilenumbruch optimieren<\/h2>\n<p>Wenn wir uns eine der Beispielmails ansehen, finden wir schnell das n&auml;chste Problem: Offensichtlich werden die mit <b>\\n <\/b>angegebenen Zeilenumbr&uuml;che nicht als Zeilenumbr&uuml;che dargestellt.<\/p>\n<p>Das ist kein Wunder: Das <b>Microsoft 365 Email<\/b>-Modul versendet standardm&auml;&szlig;ig E-Mails im HTML-Format. Aber auch das ist kein Problem. Wir &auml;ndern einfach die entsprechende Zeile in unserer Funktion wie folgt:<\/p>\n<pre>strBody = <span style=\"color:blue;\">Replace<\/span>(strBody, <span style=\"color:blue;\">vbCrLf<\/span>, \"&lt;br&gt;\")<\/pre>\n<p>Damit gelingen nun auch die Zeilenumbr&uuml;che.<\/p>\n<p>Alternativ k&ouml;nnen wir auch einstellen, ob wir per HTML oder Plain Text versenden wollen. Im <b>Microsoft 365 Email<\/b>-Modul k&ouml;nnen wir dies bereits &uuml;ber die Eigenschaft <b>Body Content Type <\/b>einstellen.<\/p>\n<p>Um dieses per Parameter einzustellen, m&uuml;ssen wir hier die Option <b>Map <\/b>aktivieren (siehe Bild 22). Auch die Eigenschaft <b>Importance <\/b>m&uuml;ssen wir zun&auml;chst f&uuml;r das Mapping aktivieren. Mehr dazu im Anschluss.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_02\/pic_464_028.png\" alt=\"Aktivieren der Einstellbarkeit von Body Content Type\" width=\"424,6267\" height=\"334,4725\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 22: Aktivieren der Einstellbarkeit von Body Content Type<\/span><\/b><\/p>\n<h2>Weitere Einstellungen vornehmen<\/h2>\n<p>Schlie&szlig;lich wollen wir noch weitere Einstellungen vornehmen und auch noch Attachments an die E-Mails anh&auml;ngen. Letzteres ist etwas aufwendiger. Also beginnen wir mit den einfacheren Aufgaben: der Priorit&auml;t, den CC- und BCC-Empf&auml;ngern und der Reply-Adresse.<\/p>\n<h2>Professionelle JSON-Struktur<\/h2>\n<p>Was wir bisher gemacht haben, war funktional: Wir haben Parameter gef&uuml;llt, diese in einem JSON-Konstrukt untergebracht und die Elemente daraus den Eigenschaften des <b>Microsoft 365 Email<\/b>-Moduls zugeordnet.<\/p>\n<p>Um wirklich richtig mit dieser Automation arbeiten zu k&ouml;nnen, wollen wir die Daten nun jedoch genau so &uuml;bergeben, wie das <b>Microsoft 365 Email<\/b>-Modul diese erwartet. Der Aufbau sieht dabei beispielsweise wie folgt aus:<\/p>\n<pre>{\r\n   \"subject\": \"Beispielbetreff einer Mail\",\r\n   \"body\": {\r\n     \"content\": \"Lieber Andr\\u00E9,&lt;br&gt;&lt;br&gt;hier kommt eine Testmail.&lt;br&gt;&lt;br&gt;Viele Gr\\u00FC\\u00DFe&lt;br&gt;Klaus\",\r\n     \"contentType\": \"html\"\r\n   },\r\n   \"toRecipients\": [\r\n     {\r\n       \"address\": \"andre@minhorst.com\",\r\n       \"name\": \"Andr\\u00E9 Minhorst\"\r\n     }\r\n   ],\r\n   \"ccRecipients\": [\r\n     {\r\n       \"address\": \"andre@minhorst.com\",\r\n       \"name\": \"Andr\\u00E9 Minhorst CC\"\r\n     }\r\n   ],\r\n   \"bccRecipients\": [\r\n     {\r\n       \"address\": \"andre@minhorst.com\",\r\n       \"name\": \"Andr\\u00E9 Minhorst CC\"\r\n     }\r\n   ],\r\n   \"replyTo\": [\r\n     {\r\n       \"address\": \"andre@minhorst.com\",\r\n       \"name\": \"Andr\\u00E9 Minhorst\"\r\n     }\r\n   ],\r\n   \"attachments\": [\r\n     {\r\n       \"filename\": \"test.pdf\",\r\n       \"data\": \"JVBERi0xLjYNJeLjz9MNCjE2IDAgb2JqDTw8L0xpbmVhcml6ZWQgMS9MIDE2NDI4L08gMTgvRSAxMTI0NC9OIDEvVCAxNjEyNC9IIFsgNDU3IDE1M2JqDXN0YXJ0eHJlZg0KMTE2DQolJUVPRg0K...\"\r\n     }\r\n   ],\r\n   \"importance\": \"High\"\r\n}<\/pre>\n<p>Dabei wird direkt ber&uuml;cksichtigt, dass wir auch eine Liste von E-Mail-Empf&auml;ngern &uuml;bergeben k&ouml;nnen und nicht nur einen Empf&auml;nger. F&uuml;r mehrere Empf&auml;nger w&uuml;rden wir entsprechend Elemente zum &uuml;bergeordneten Element <b>toRecipients <\/b>zuordnen.<\/p>\n<h2>Funktion zum Zusammenstellen und Senden des JSON-Dokuments<\/h2>\n<p>Dies k&ouml;nnen wir nun in einer Funktion abbilden. Diese hei&szlig;t <b>Microsoft365_MailVersenden<\/b> und erwartet die bereits bekannten Informationen zur E-Mail als Parameter. Den ersten Teil sehen wir in Listing 3.<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>Microsoft365_MailVersenden(strTo<span style=\"color:blue;\"> As String<\/span>, strToName<span style=\"color:blue;\"> As String<\/span>, strSubject<span style=\"color:blue;\"> As String<\/span>, strBody<span style=\"color:blue;\"> As String<\/span>, _\r\n         <span style=\"color:blue;\">Optional<\/span> strImportance<span style=\"color:blue;\"> As String<\/span>, <span style=\"color:blue;\">Optional<\/span> strCC<span style=\"color:blue;\"> As String<\/span>, <span style=\"color:blue;\">Optional<\/span> strCCName<span style=\"color:blue;\"> As String<\/span>, <span style=\"color:blue;\">Optional<\/span> strBCC<span style=\"color:blue;\"> As <\/span>_\r\n         String, <span style=\"color:blue;\">Optional<\/span> strBCCName<span style=\"color:blue;\"> As String<\/span>, <span style=\"color:blue;\">Optional<\/span> strReply<span style=\"color:blue;\"> As String<\/span>, <span style=\"color:blue;\">Optional<\/span> strReplyName<span style=\"color:blue;\"> As String<\/span>, <span style=\"color:blue;\">Optional<\/span> _\r\n         strBodyFormat<span style=\"color:blue;\"> As String<\/span>, <span style=\"color:blue;\">Optional<\/span> strAttachmentPath<span style=\"color:blue;\"> As String<\/span>)\r\n     <span style=\"color:blue;\">Dim <\/span>strWebhookURL<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>objXMLHTTP<span style=\"color:blue;\"> As <\/span>MSXML2.XMLHTTP60\r\n     <span style=\"color:blue;\">Dim <\/span>strJSON<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>dicJSON<span style=\"color:blue;\"> As <\/span><span style=\"color:blue;\">New<\/span> Dictionary\r\n     <span style=\"color:blue;\">Dim <\/span>dicBody<span style=\"color:blue;\"> As <\/span><span style=\"color:blue;\">New<\/span> Dictionary\r\n     <span style=\"color:blue;\">Dim <\/span>colToRecipients<span style=\"color:blue;\"> As <\/span><span style=\"color:blue;\">New<\/span> Collection\r\n     <span style=\"color:blue;\">Dim <\/span>dicToRecipients<span style=\"color:blue;\"> As <\/span><span style=\"color:blue;\">New<\/span> Dictionary\r\n     <span style=\"color:blue;\">Dim <\/span>colCCRecipients<span style=\"color:blue;\"> As <\/span><span style=\"color:blue;\">New<\/span> Collection\r\n     <span style=\"color:blue;\">Dim <\/span>dicCCRecipients<span style=\"color:blue;\"> As <\/span><span style=\"color:blue;\">New<\/span> Dictionary\r\n     <span style=\"color:blue;\">Dim <\/span>colBCCRecipients<span style=\"color:blue;\"> As <\/span><span style=\"color:blue;\">New<\/span> Collection\r\n     <span style=\"color:blue;\">Dim <\/span>dicBCCRecipients<span style=\"color:blue;\"> As <\/span><span style=\"color:blue;\">New<\/span> Dictionary\r\n     <span style=\"color:blue;\">Dim <\/span>colReplyToRecipients<span style=\"color:blue;\"> As <\/span><span style=\"color:blue;\">New<\/span> Collection\r\n     <span style=\"color:blue;\">Dim <\/span>dicReplyToRecipients<span style=\"color:blue;\"> As <\/span><span style=\"color:blue;\">New<\/span> Dictionary\r\n     <span style=\"color:blue;\">Dim <\/span>colAttachments<span style=\"color:blue;\"> As <\/span><span style=\"color:blue;\">New<\/span> Collection\r\n     <span style=\"color:blue;\">Dim <\/span>dicAttachment<span style=\"color:blue;\"> As <\/span><span style=\"color:blue;\">New<\/span> Dictionary\r\n     <span style=\"color:blue;\">Dim <\/span>arrBytes()<span style=\"color:blue;\"> As Byte<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strBase64<span style=\"color:blue;\"> As String<\/span>\r\n     \r\n     strWebhookURL = \"https:\/\/hook.eu2.make.com\/5yauwb5ehk63mudiohao3xf4mkc7lwe2\"\r\n     strBody = <span style=\"color:blue;\">Replace<\/span>(strBody, <span style=\"color:blue;\">vbCrLf<\/span>, \"&lt;br&gt;\")\r\n     \r\n     dicJSON.Add \"subject\", strSubject\r\n     dicJSON.Add \"body\", dicBody\r\n     dicBody.Add \"content\", strBody\r\n     dicBody.Add \"contentType\", strBodyFormat\r\n     \r\n     dicJSON.Add \"toRecipients\", colToRecipients\r\n     colToRecipients.Add dicToRecipients\r\n     dicToRecipients.Add \"address\", strTo\r\n     dicToRecipients.Add \"name\", strToName\r\n     ...<\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 3: Funktion f&uuml;r den Mailversand, Teil 1<\/span><\/b><\/p>\n<p>Wir verwenden hier die Methoden aus dem Artikel <b>JSON-Dokumente per Objektmodell zusammenstellen <\/b>(<b>www.vbentwickler.de\/412<\/b>), um das JSON-Dokument zusammenzustellen.<\/p>\n<p>Hier deklarieren wir zun&auml;chst einige <b>Dictionary<\/b>&#8211; und <b>Collection<\/b>-Elemente.<\/p>\n<p>Wir instanzieren diese auch direkt, indem wir dem Typ das Schl&uuml;sselwort <b>New <\/b>voranstellen. F&uuml;r die Elemente der JSON-Datei mit den geschweiften Klammern ben&ouml;tigen wir <b>Dictionary<\/b>-Elemente, f&uuml;r die mit den eckigen Klammern <b>Collection<\/b>-Auflistungen.<\/p>\n<p>Das Hauptelement enth&auml;lt direkt eine geschweifte Klammer, also verwenden wir ein <b>Dictionary<\/b>-Objekt zur Aufnahme der enthaltenen Elemente wie <b>subject<\/b>, <b>body <\/b>und so weiter:<\/p>\n<pre>{\r\n   \"subject\": \"Beispielbetreff einer Mail\",\r\n   \"body\": {\r\n   ...<\/pre>\n<p>Diesem weisen wir mit der <b>Add<\/b>-Methode ein Name-Wert-Paar aus <b>subject <\/b>und dem Inhalt des Parameters <b>strSubject <\/b>zu. Das Gleiche erledigen wir f&uuml;r <b>body<\/b>, <b>content <\/b>und <b>contentType<\/b>.<\/p>\n<p>Dann folgt die Auflistung der Empf&auml;nger, die in eckige Klammern eingeschlossen ist:<\/p>\n<pre>  \"toRecipients\": [<\/pre>\n<p>Also f&uuml;gen wir <b>dicJSON <\/b>nun das <b>Collection<\/b>-Objekt <b>colToRecipients <\/b>hinzu. Diesem f&uuml;gen wir wiederum das <b>Dictionary<\/b>-Objekt <b>dicToRecipients <\/b>hinzu, das wiederum in den Name-Wert-Paaren <b>address <\/b>und <b>name <\/b>die Werte der Parameter <b>strTo <\/b>und <b>strToName <\/b>erh&auml;lt.<\/p>\n<p>Danach pr&uuml;ft die Funktion, ob Werte f&uuml;r <b>strCC <\/b>und <b>strCCName <\/b>&uuml;bergeben wurden (ab hier siehe Listing 4).<\/p>\n<pre>     ...\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> (<span style=\"color:blue;\">Len<\/span>(strCC) = 0 Or <span style=\"color:blue;\">Len<\/span>(strCCName)) = 0<span style=\"color:blue;\"> Then<\/span>\r\n         dicJSON.Add \"ccRecipients\", colCCRecipients\r\n         colCCRecipients.Add dicCCRecipients\r\n         dicCCRecipients.Add \"address\", strCC\r\n         dicCCRecipients.Add \"name\", strCCName\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> (<span style=\"color:blue;\">Len<\/span>(strCC) = 0 Or <span style=\"color:blue;\">Len<\/span>(strCCName)) = 0<span style=\"color:blue;\"> Then<\/span>\r\n         dicJSON.Add \"bccRecipients\", colBCCRecipients\r\n         colBCCRecipients.Add dicBCCRecipients\r\n         dicBCCRecipients.Add \"address\", strCC\r\n         dicBCCRecipients.Add \"name\", strCCName\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     \r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> (<span style=\"color:blue;\">Len<\/span>(strReply) = 0 Or <span style=\"color:blue;\">Len<\/span>(strReplyName)) = 0<span style=\"color:blue;\"> Then<\/span>\r\n         dicJSON.Add \"replyTo\", colReplyToRecipients\r\n         colReplyToRecipients.Add dicReplyToRecipients\r\n         dicReplyToRecipients.Add \"address\", strReply\r\n         dicReplyToRecipients.Add \"name\", strReplyName\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     \r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> <span style=\"color:blue;\">Len<\/span>(strAttachmentPath) = 0<span style=\"color:blue;\"> Then<\/span>\r\n         dicJSON.Add \"attachments\", colAttachments\r\n         colAttachments.Add dicAttachment\r\n         dicAttachment.Add \"filename\", \"test.pdf\"\r\n         arrBytes = ReadFileAsBytes(strAttachmentPath)\r\n         strBase64 = EncodeBase64(arrBytes)\r\n         dicAttachment.Add \"data\", strBase64\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     \r\n     dicJSON.Add \"importance\", strImportance\r\n     strJSON = ConvertToJson(dicJSON)\r\n     \r\n     <span style=\"color:blue;\">Set<\/span> objXMLHTTP = <span style=\"color:blue;\">New<\/span> MSXML2.XMLHTTP60\r\n     objXMLHTTP.Open \"POST\", strWebhookURL, <span style=\"color:blue;\">False<\/span>\r\n     objXMLHTTP.setRequestHeader \"Content-Type\", \"application\/json\"\r\n     objXMLHTTP.Send strJSON\r\n     Select Case objXMLHTTP.status\r\n         <span style=\"color:blue;\">Case <\/span>201\r\n             <span style=\"color:blue;\">MsgBox<\/span> \"Erfolgreich gesendet.\" & objXMLHTTP.statusText\r\n         <span style=\"color:blue;\">Case <\/span>200\r\n             <span style=\"color:blue;\">MsgBox<\/span> \"Automation l&auml;uft nicht.\"\r\n         <span style=\"color:blue;\">Case <\/span>400\r\n             <span style=\"color:blue;\">MsgBox<\/span> \"JSON ung&uuml;ltig.\"\r\n         <span style=\"color:blue;\">Case Else<\/span>\r\n             <span style=\"color:blue;\">MsgBox<\/span> \"Fehler beim Senden: \" & objXMLHTTP.status & \" - \" & objXMLHTTP.statusText\r\n     <span style=\"color:blue;\">End Select<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 4: Funktion f&uuml;r den Mailversand, Teil 2<\/span><\/b><\/p>\n<p>Diese m&uuml;ssen beide vorhanden sein. Dann f&uuml;gt sie auch f&uuml;r diese Informationen einen entsprechenden Abschnitt im JSON-Dokument bereit.<\/p>\n<p>Das Gleiche geschieht anschlie&szlig;end auch noch f&uuml;r den <b>BCC<\/b>-Empf&auml;nger. und f&uuml;r den <b>ReplyTo<\/b>-Abschnitt des JSON-Dokuments.<\/p>\n<p>Danach f&uuml;gt die Funktion die Elemente f&uuml;r die <b>Attachments <\/b>hinzu. Auch davon kann es mehrere geben, daher enth&auml;lt das JSON-Dokument wieder eckige Klammern f&uuml;r die darin enthaltenen und in geschweiften Klammern eingebetteten <b>Attachment<\/b>-Informationen:<\/p>\n<pre>\"attachments\": [<\/pre>\n<p>Die Funktion pr&uuml;ft zuerst, ob ein Attachment hinzugef&uuml;gt werden soll. Falls ja, f&uuml;gt es entsprechend ein <b>Collection<\/b>-Element zu <b>dicJSON <\/b>hinzu und f&uuml;llt dieses dann mit einem <b>Dictionary<\/b>-Element mit den einzelnen Name-Wert-Paaren f&uuml;r die Eigenschaften <b>filename <\/b>und <b>data<\/b>.<\/p>\n<p>Zum F&uuml;llen des <b>data<\/b>-Objekts sind ein paar weitere Schritte n&ouml;tig, die wir gleich vorstellen. Zusammengefasst: Die Datei wird in ein <b>Byte<\/b>-Array konvertiert und dieses wird als <b>Base64<\/b>-kodierte Zeichenkette &uuml;bergeben.<\/p>\n<p>Schlie&szlig;lich h&auml;ngen wir noch das <b>importance<\/b>-Element an, rufen die Anweisungen zum Senden der Anfrage an den Webhook auf und werten das Ergebnis aus.<\/p>\n<h2>Einlesen von Dateien als Byte-Array<\/h2>\n<p>Offen ist noch die Aufgabe, als Attachment zu verwendende Dateien einzulesen und diese in ein Format zu bringen, das wir innerhalb des JSON-Dokuments an den Webhook &uuml;bergeben k&ouml;nnen.<\/p>\n<p>Dazu nutzen wir zwei Funktionen. Die erste hei&szlig;t <b>ReadFileAsBytes <\/b>und erwartet den Namen der einzulesenden Datei als Parameter (siehe Listing 5).<\/p>\n<pre><span style=\"color:blue;\">Function <\/span>ReadFileAsBytes(strFilePath<span style=\"color:blue;\"> As String<\/span>)<span style=\"color:blue;\"> As Byte<\/span>()\r\n     <span style=\"color:blue;\">Dim <\/span>arrBytes()<span style=\"color:blue;\"> As Byte<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>intFile<span style=\"color:blue;\"> As Integer<\/span>\r\n     intFile = FreeFile\r\n     Open strFilePath For Binary<span style=\"color:blue;\"> As <\/span>#intFile\r\n     ReDim arrBytes(0 To LOF(intFile) - 1)\r\n     <span style=\"color:blue;\">If <\/span>LOF(intFile) &gt; 0<span style=\"color:blue;\"> Then<\/span>\r\n         Get #intFile, , arrBytes\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     Close #intFile\r\n     ReadFileAsBytes = arrBytes\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 5: Einlesen einer Datei in ein Byte-Array<\/span><\/b><\/p>\n<p>Die Funktion legt eine Dateinummer f&uuml;r den Zugriff fest und &ouml;ffnet die einzulesende Datei mit der <b>Open<\/b>-Anweisung. Dann dimensioniert sie ein Array entsprechend der Gr&ouml;&szlig;e der Datei und liest die Datei in das Array ein. Dann schlie&szlig;t sie die Datei und gibt das Byte-Array aus <b>arrBytes <\/b>als Funktionsergebnis zur&uuml;ck.<\/p>\n<h2>Kodieren eines Byte-Arrays in eine Base64-Zeichenkette<\/h2>\n<p>Dieses Array geben wir gleich weiter an die Funktion <b>EncodeBase64<\/b> (siehe Listing 6). Diese erstellt ein <b>DOMDocument60<\/b>-Objekt und erstellt darin ein Element namens <b>b64<\/b>. Der Datentyp dieses Elements wird auf <b>bin.base64 <\/b>festgelegt. Als Wert schreibt sie einfach den Inhalt des &uuml;bergebenen <b>Byte<\/b>-Arrays in die Eigenschaft <b>nodeTypedValue<\/b>.<\/p>\n<pre><span style=\"color:blue;\">Function <\/span>EncodeBase64(arrBytes()<span style=\"color:blue;\"> As Byte<\/span>)<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>objXML<span style=\"color:blue;\"> As <\/span>MSXML2.DOMDocument60\r\n     <span style=\"color:blue;\">Dim <\/span>objElement<span style=\"color:blue;\"> As <\/span>MSXML2.IXMLDOMElement\r\n     \r\n     <span style=\"color:blue;\">Set<\/span> objXML = <span style=\"color:blue;\">New<\/span> MSXML2.DOMDocument60\r\n     <span style=\"color:blue;\">Set<\/span> objElement = objXML.createElement(\"b64\")\r\n     \r\n     objElement.DataType = \"bin.base64\"\r\n     objElement.nodeTypedValue = arrBytes\r\n     \r\n     EncodeBase64 = <span style=\"color:blue;\">Replace<\/span>(objElement.Text, <span style=\"color:blue;\">vbLf<\/span>, \"\")\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 6: Umwandeln eines Byte-Arrays in eine Base64-Zeichenkette<\/span><\/b><\/p>\n<p>Wenn wir nun den Wert der Eigenschaft <b>Text <\/b>dieses Elements auslesen, erhalten wir die mit Base64 kodierte Zeichenfolge.<\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Wir haben in diesem Artikel gezeigt, wie Du die Daten f&uuml;r eine E-Mail in einem JSON-Dokument zusammenstellst und dieses durch einen Webhook-Aufruf an den Automationsdienst Make &uuml;bergibst. Dieser enth&auml;lt f&uuml;r diesen Webhook eine Automation, welche die &uuml;bergebenen Daten in eine neue E-Mail eintr&auml;gt und diese schlie&szlig;lich versendet.<\/p>\n<p>Dabei k&ouml;nnen wir hier nur jeweils einen <b>To<\/b>-, <b>CC<\/b>&#8211; und <b>BCC<\/b>-Empf&auml;nger &uuml;bergeben.<\/p>\n<p>In einem weiteren Teil dieser Artikelreihe stellen wir daher eine Klasse vor, die nicht nur das Zusammenstellen von E-Mails noch professioneller gestaltet, sondern auch noch die M&ouml;glichkeit bietet, mehrere Empf&auml;nger f&uuml;r die verschiedenen Kategorien zusammenzustellen. Du findest diesen Artikel unter dem Namen <b>Microsoft 365 E-Mails mit Make per Klasse senden <\/b>(<b>www.vbentwickler.de\/465<\/b>).<\/p>\n<p>Mit den in diesem Artikel vorgestellten Techniken kann man das Versenden von E-Mails leicht auf andere Dienstleister wie zum Beispiel Google Mail anpassen. Hier ist zu beachten, dass dazu ein kostenpflichtiger Google Workspace-Konto n&ouml;tig ist. Mit einer einfachen GMail-Adresse funktioniert dies nicht.<\/p>\n<p>Es ist auch leicht m&ouml;glich, Mails einfach &uuml;ber SMTP zu versenden. Dazu ben&ouml;tigt man in Make statt des Elements zum Versenden von Mails mit Microsoft 365 einfach das Element <b>Send an Email <\/b>aus der Sammlung <b>Email<\/b>.<\/p>\n<h2>Downloads zu diesem Beitrag<\/h2>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>Outlook365MitMakeAlsOutlookAlternative.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/DAFA50D4-7219-4432-B808-4DD898CB48B4\/vbe_464.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Am liebsten w&auml;re den meisten Microsoft-Anwendern vermutlich, wenn sie einfach ihre vorhandenen VBA-Automationen auf Basis von Microsoft Outlook verwenden k&ouml;nnten. Allerdings zeigt Microsoft aktuell kein Zeichen, dass das klassische Outlook f&uuml;r Desktop mit seiner VBA-Programmierbarkeit  &uuml;ber das Jahr 2029 hinaus unterst&uuml;tzt werden wird. Die neue Outlook-Version ist allerdings noch nicht so weit, dass wir damit so arbeiten k&ouml;nnen, wie es mit der klassischen Version m&ouml;glich ist. Genau genommen wird das, wenn man sich die Pl&auml;ne von Microsoft ansieht, auch zumindest per VBA nicht mehr m&ouml;glich sein. Um zumindest das Versenden von E-Mails von VBA aus zu realisieren, ben&ouml;tigen wir also eine Alternative. In diesem Artikel schauen wir uns an, wie wir Outlook.com &uuml;ber den Automatisierungdienst Make dazu bringen, E-Mails zu versenden &#8211; mit allen Funktionen, die wir von Outlook gewohnt sind.<\/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":[66022025,662025,44000021,44000012,44000023,44000028],"tags":[],"yst_prominent_words":[],"class_list":["post-55000464","post","type-post","status-publish","format-standard","hentry","category-66022025","category-662025","category-Entity_Framework","category-Interaktiv","category-PowerApps","category-Word_programmieren"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.8 - aioseo.com -->\n\t<meta name=\"description\" content=\"Am liebsten w\u00e4re den meisten Microsoft-Anwendern vermutlich, wenn sie einfach ihre vorhandenen VBA-Automationen auf Basis von Microsoft Outlook verwenden k\u00f6nnten. Allerdings zeigt Microsoft aktuell kein Zeichen, dass das klassische Outlook f\u00fcr Desktop mit seiner VBA-Programmierbarkeit \u00fcber das Jahr 2029 hinaus unterst\u00fctzt werden wird. Die neue Outlook-Version ist allerdings noch nicht so weit, dass wir damit so arbeiten k\u00f6nnen, wie es mit der klassischen Version m\u00f6glich ist. Genau genommen wird das, wenn man sich die Pl\u00e4ne von Microsoft ansieht, auch zumindest per VBA nicht mehr m\u00f6glich sein. Um zumindest das Versenden von E-Mails von VBA aus zu realisieren, ben\u00f6tigen wir also eine Alternative. In diesem Artikel schauen wir uns an, wie wir Outlook.com \u00fcber den Automatisierungdienst Make dazu bringen, E-Mails zu versenden - mit allen Funktionen, die wir von Outlook gewohnt sind.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Andr\u00e9 Minhorst\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/vbentwickler.de\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.8\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Visual Basic Entwickler - Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Microsoft 365-Mail mit Make und VBA ohne Outlook - Visual Basic Entwickler\" \/>\n\t\t<meta property=\"og:description\" content=\"Am liebsten w\u00e4re den meisten Microsoft-Anwendern vermutlich, wenn sie einfach ihre vorhandenen VBA-Automationen auf Basis von Microsoft Outlook verwenden k\u00f6nnten. Allerdings zeigt Microsoft aktuell kein Zeichen, dass das klassische Outlook f\u00fcr Desktop mit seiner VBA-Programmierbarkeit \u00fcber das Jahr 2029 hinaus unterst\u00fctzt werden wird. Die neue Outlook-Version ist allerdings noch nicht so weit, dass wir damit so arbeiten k\u00f6nnen, wie es mit der klassischen Version m\u00f6glich ist. Genau genommen wird das, wenn man sich die Pl\u00e4ne von Microsoft ansieht, auch zumindest per VBA nicht mehr m\u00f6glich sein. Um zumindest das Versenden von E-Mails von VBA aus zu realisieren, ben\u00f6tigen wir also eine Alternative. In diesem Artikel schauen wir uns an, wie wir Outlook.com \u00fcber den Automatisierungdienst Make dazu bringen, E-Mails zu versenden - mit allen Funktionen, die wir von Outlook gewohnt sind.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/vbentwickler.de\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2025-07-02T14:49:42+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"-001-11-30T00:00:00+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Microsoft 365-Mail mit Make und VBA ohne Outlook - Visual Basic Entwickler\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Am liebsten w\u00e4re den meisten Microsoft-Anwendern vermutlich, wenn sie einfach ihre vorhandenen VBA-Automationen auf Basis von Microsoft Outlook verwenden k\u00f6nnten. Allerdings zeigt Microsoft aktuell kein Zeichen, dass das klassische Outlook f\u00fcr Desktop mit seiner VBA-Programmierbarkeit \u00fcber das Jahr 2029 hinaus unterst\u00fctzt werden wird. Die neue Outlook-Version ist allerdings noch nicht so weit, dass wir damit so arbeiten k\u00f6nnen, wie es mit der klassischen Version m\u00f6glich ist. Genau genommen wird das, wenn man sich die Pl\u00e4ne von Microsoft ansieht, auch zumindest per VBA nicht mehr m\u00f6glich sein. Um zumindest das Versenden von E-Mails von VBA aus zu realisieren, ben\u00f6tigen wir also eine Alternative. In diesem Artikel schauen wir uns an, wie wir Outlook.com \u00fcber den Automatisierungdienst Make dazu bringen, E-Mails zu versenden - mit allen Funktionen, die wir von Outlook gewohnt sind.\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\\\/#blogposting\",\"name\":\"Microsoft 365-Mail mit Make und VBA ohne Outlook - Visual Basic Entwickler\",\"headline\":\"Microsoft 365-Mail mit Make und VBA ohne Outlook\",\"author\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"..\\\/fileadmin\\\/_temp_\\\/2025_02\\\/pic_464_003.png\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\\\/#articleImage\"},\"datePublished\":\"2025-04-01T00:00:00+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"inLanguage\":\"de-DE\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\\\/#webpage\"},\"articleSection\":\"2\\\/2025, 2025, Entity Framework, Interaktiv, PowerApps, Word programmieren\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vbentwickler.de\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2025\\\/#listItem\",\"name\":\"2025\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2025\\\/#listItem\",\"position\":2,\"name\":\"2025\",\"item\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2025\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2025\\\/2\\\/2025\\\/#listItem\",\"name\":\"2\\\/2025\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2025\\\/2\\\/2025\\\/#listItem\",\"position\":3,\"name\":\"2\\\/2025\",\"item\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2025\\\/2\\\/2025\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\\\/#listItem\",\"name\":\"Microsoft 365-Mail mit Make und VBA ohne Outlook\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2025\\\/#listItem\",\"name\":\"2025\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\\\/#listItem\",\"position\":4,\"name\":\"Microsoft 365-Mail mit Make und VBA ohne Outlook\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2025\\\/2\\\/2025\\\/#listItem\",\"name\":\"2\\\/2025\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#organization\",\"name\":\"Datenbankentwickler\",\"description\":\"Das Magazin f\\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/cropped-header_vbe-1.png\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\\\/#organizationLogo\",\"width\":664,\"height\":225},\"image\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\\\/#organizationLogo\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/\",\"name\":\"Andr\\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Andr\\u00e9 Minhorst\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\\\/#webpage\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\\\/\",\"name\":\"Microsoft 365-Mail mit Make und VBA ohne Outlook - Visual Basic Entwickler\",\"description\":\"Am liebsten w\\u00e4re den meisten Microsoft-Anwendern vermutlich, wenn sie einfach ihre vorhandenen VBA-Automationen auf Basis von Microsoft Outlook verwenden k\\u00f6nnten. Allerdings zeigt Microsoft aktuell kein Zeichen, dass das klassische Outlook f\\u00fcr Desktop mit seiner VBA-Programmierbarkeit \\u00fcber das Jahr 2029 hinaus unterst\\u00fctzt werden wird. Die neue Outlook-Version ist allerdings noch nicht so weit, dass wir damit so arbeiten k\\u00f6nnen, wie es mit der klassischen Version m\\u00f6glich ist. Genau genommen wird das, wenn man sich die Pl\\u00e4ne von Microsoft ansieht, auch zumindest per VBA nicht mehr m\\u00f6glich sein. Um zumindest das Versenden von E-Mails von VBA aus zu realisieren, ben\\u00f6tigen wir also eine Alternative. In diesem Artikel schauen wir uns an, wie wir Outlook.com \\u00fcber den Automatisierungdienst Make dazu bringen, E-Mails zu versenden - mit allen Funktionen, die wir von Outlook gewohnt sind.\",\"inLanguage\":\"de-DE\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\"},\"datePublished\":\"2025-04-01T00:00:00+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#website\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/\",\"name\":\"Datenbankentwickler\",\"description\":\"Das Magazin f\\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.\",\"inLanguage\":\"de-DE\",\"publisher\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Microsoft 365-Mail mit Make und VBA ohne Outlook - Visual Basic Entwickler","description":"Am liebsten w\u00e4re den meisten Microsoft-Anwendern vermutlich, wenn sie einfach ihre vorhandenen VBA-Automationen auf Basis von Microsoft Outlook verwenden k\u00f6nnten. Allerdings zeigt Microsoft aktuell kein Zeichen, dass das klassische Outlook f\u00fcr Desktop mit seiner VBA-Programmierbarkeit \u00fcber das Jahr 2029 hinaus unterst\u00fctzt werden wird. Die neue Outlook-Version ist allerdings noch nicht so weit, dass wir damit so arbeiten k\u00f6nnen, wie es mit der klassischen Version m\u00f6glich ist. Genau genommen wird das, wenn man sich die Pl\u00e4ne von Microsoft ansieht, auch zumindest per VBA nicht mehr m\u00f6glich sein. Um zumindest das Versenden von E-Mails von VBA aus zu realisieren, ben\u00f6tigen wir also eine Alternative. In diesem Artikel schauen wir uns an, wie wir Outlook.com \u00fcber den Automatisierungdienst Make dazu bringen, E-Mails zu versenden - mit allen Funktionen, die wir von Outlook gewohnt sind.","canonical_url":"https:\/\/vbentwickler.de\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/vbentwickler.de\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\/#blogposting","name":"Microsoft 365-Mail mit Make und VBA ohne Outlook - Visual Basic Entwickler","headline":"Microsoft 365-Mail mit Make und VBA ohne Outlook","author":{"@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author"},"publisher":{"@id":"https:\/\/vbentwickler.de\/#organization"},"image":{"@type":"ImageObject","url":"..\/fileadmin\/_temp_\/2025_02\/pic_464_003.png","@id":"https:\/\/vbentwickler.de\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\/#articleImage"},"datePublished":"2025-04-01T00:00:00+00:00","dateModified":"-0001-11-30T00:00:00+00:00","inLanguage":"de-DE","mainEntityOfPage":{"@id":"https:\/\/vbentwickler.de\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\/#webpage"},"isPartOf":{"@id":"https:\/\/vbentwickler.de\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\/#webpage"},"articleSection":"2\/2025, 2025, Entity Framework, Interaktiv, PowerApps, Word programmieren"},{"@type":"BreadcrumbList","@id":"https:\/\/vbentwickler.de\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/vbentwickler.de#listItem","position":1,"name":"Home","item":"https:\/\/vbentwickler.de","nextItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2025\/#listItem","name":"2025"}},{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2025\/#listItem","position":2,"name":"2025","item":"https:\/\/vbentwickler.de\/category\/2025\/","nextItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2025\/2\/2025\/#listItem","name":"2\/2025"},"previousItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2025\/2\/2025\/#listItem","position":3,"name":"2\/2025","item":"https:\/\/vbentwickler.de\/category\/2025\/2\/2025\/","nextItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\/#listItem","name":"Microsoft 365-Mail mit Make und VBA ohne Outlook"},"previousItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2025\/#listItem","name":"2025"}},{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\/#listItem","position":4,"name":"Microsoft 365-Mail mit Make und VBA ohne Outlook","previousItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2025\/2\/2025\/#listItem","name":"2\/2025"}}]},{"@type":"Organization","@id":"https:\/\/vbentwickler.de\/#organization","name":"Datenbankentwickler","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.","url":"https:\/\/vbentwickler.de\/","logo":{"@type":"ImageObject","url":"https:\/\/vbentwickler.de\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png","@id":"https:\/\/vbentwickler.de\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\/#organizationLogo","width":664,"height":225},"image":{"@id":"https:\/\/vbentwickler.de\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\/#organizationLogo"}},{"@type":"Person","@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author","url":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","@id":"https:\/\/vbentwickler.de\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","width":96,"height":96,"caption":"Andr\u00e9 Minhorst"}},{"@type":"WebPage","@id":"https:\/\/vbentwickler.de\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\/#webpage","url":"https:\/\/vbentwickler.de\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\/","name":"Microsoft 365-Mail mit Make und VBA ohne Outlook - Visual Basic Entwickler","description":"Am liebsten w\u00e4re den meisten Microsoft-Anwendern vermutlich, wenn sie einfach ihre vorhandenen VBA-Automationen auf Basis von Microsoft Outlook verwenden k\u00f6nnten. Allerdings zeigt Microsoft aktuell kein Zeichen, dass das klassische Outlook f\u00fcr Desktop mit seiner VBA-Programmierbarkeit \u00fcber das Jahr 2029 hinaus unterst\u00fctzt werden wird. Die neue Outlook-Version ist allerdings noch nicht so weit, dass wir damit so arbeiten k\u00f6nnen, wie es mit der klassischen Version m\u00f6glich ist. Genau genommen wird das, wenn man sich die Pl\u00e4ne von Microsoft ansieht, auch zumindest per VBA nicht mehr m\u00f6glich sein. Um zumindest das Versenden von E-Mails von VBA aus zu realisieren, ben\u00f6tigen wir also eine Alternative. In diesem Artikel schauen wir uns an, wie wir Outlook.com \u00fcber den Automatisierungdienst Make dazu bringen, E-Mails zu versenden - mit allen Funktionen, die wir von Outlook gewohnt sind.","inLanguage":"de-DE","isPartOf":{"@id":"https:\/\/vbentwickler.de\/#website"},"breadcrumb":{"@id":"https:\/\/vbentwickler.de\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\/#breadcrumblist"},"author":{"@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author"},"creator":{"@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author"},"datePublished":"2025-04-01T00:00:00+00:00","dateModified":"-0001-11-30T00:00:00+00:00"},{"@type":"WebSite","@id":"https:\/\/vbentwickler.de\/#website","url":"https:\/\/vbentwickler.de\/","name":"Datenbankentwickler","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.","inLanguage":"de-DE","publisher":{"@id":"https:\/\/vbentwickler.de\/#organization"}}]},"og:locale":"de_DE","og:site_name":"Visual Basic Entwickler - Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.","og:type":"article","og:title":"Microsoft 365-Mail mit Make und VBA ohne Outlook - Visual Basic Entwickler","og:description":"Am liebsten w\u00e4re den meisten Microsoft-Anwendern vermutlich, wenn sie einfach ihre vorhandenen VBA-Automationen auf Basis von Microsoft Outlook verwenden k\u00f6nnten. Allerdings zeigt Microsoft aktuell kein Zeichen, dass das klassische Outlook f\u00fcr Desktop mit seiner VBA-Programmierbarkeit \u00fcber das Jahr 2029 hinaus unterst\u00fctzt werden wird. Die neue Outlook-Version ist allerdings noch nicht so weit, dass wir damit so arbeiten k\u00f6nnen, wie es mit der klassischen Version m\u00f6glich ist. Genau genommen wird das, wenn man sich die Pl\u00e4ne von Microsoft ansieht, auch zumindest per VBA nicht mehr m\u00f6glich sein. Um zumindest das Versenden von E-Mails von VBA aus zu realisieren, ben\u00f6tigen wir also eine Alternative. In diesem Artikel schauen wir uns an, wie wir Outlook.com \u00fcber den Automatisierungdienst Make dazu bringen, E-Mails zu versenden - mit allen Funktionen, die wir von Outlook gewohnt sind.","og:url":"https:\/\/vbentwickler.de\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\/","og:image":"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png","og:image:secure_url":"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png","article:published_time":"2025-07-02T14:49:42+00:00","article:modified_time":"-001-11-30T00:00:00+00:00","twitter:card":"summary_large_image","twitter:title":"Microsoft 365-Mail mit Make und VBA ohne Outlook - Visual Basic Entwickler","twitter:description":"Am liebsten w\u00e4re den meisten Microsoft-Anwendern vermutlich, wenn sie einfach ihre vorhandenen VBA-Automationen auf Basis von Microsoft Outlook verwenden k\u00f6nnten. Allerdings zeigt Microsoft aktuell kein Zeichen, dass das klassische Outlook f\u00fcr Desktop mit seiner VBA-Programmierbarkeit \u00fcber das Jahr 2029 hinaus unterst\u00fctzt werden wird. Die neue Outlook-Version ist allerdings noch nicht so weit, dass wir damit so arbeiten k\u00f6nnen, wie es mit der klassischen Version m\u00f6glich ist. Genau genommen wird das, wenn man sich die Pl\u00e4ne von Microsoft ansieht, auch zumindest per VBA nicht mehr m\u00f6glich sein. Um zumindest das Versenden von E-Mails von VBA aus zu realisieren, ben\u00f6tigen wir also eine Alternative. In diesem Artikel schauen wir uns an, wie wir Outlook.com \u00fcber den Automatisierungdienst Make dazu bringen, E-Mails zu versenden - mit allen Funktionen, die wir von Outlook gewohnt sind.","twitter:image":"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png"},"aioseo_meta_data":{"post_id":"55000464","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"created":"2025-07-02 12:06:55","updated":"2026-05-16 09:18:43","ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/vbentwickler.de\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/vbentwickler.de\/category\/2025\/\" title=\"2025\">2025<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/vbentwickler.de\/category\/2025\/2\/2025\/\" title=\"2\/2025\">2\/2025<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tMicrosoft 365-Mail mit Make und VBA ohne Outlook\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/vbentwickler.de"},{"label":"2025","link":"https:\/\/vbentwickler.de\/category\/2025\/"},{"label":"2\/2025","link":"https:\/\/vbentwickler.de\/category\/2025\/2\/2025\/"},{"label":"Microsoft 365-Mail mit Make und VBA ohne Outlook","link":"https:\/\/vbentwickler.de\/Microsoft_365Mail_mit_Make_und_VBA_ohne_Outlook\/"}],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000464","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/comments?post=55000464"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000464\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000464"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000464"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000464"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000464"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}