AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Emails über Microsoft Graph API senden (mit Sourcecode)
Thema durchsuchen
Ansicht
Themen-Optionen

Emails über Microsoft Graph API senden (mit Sourcecode)

Ein Thema von mjustin · begonnen am 5. Jan 2024 · letzter Beitrag vom 8. Jan 2024
Antwort Antwort
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#1

Emails über Microsoft Graph API senden (mit Sourcecode)

  Alt 5. Jan 2024, 20:16
In einigen Beiträgen wurde hier das Thema Graph API im Zusammenhang mit Versand von Emails angesprochen.

Die API wird hier beschrieben: https://learn.microsoft.com/de-de/graph/api/user-get

Das für den Aufruf der API notwendige Access-Token erhält man über den "OAuth 2.0 authorization Endpunkt (v2)" in Microsoft Entra (ehemals Azure). Dieser ist eine Web-URL, zum Beispiel 'https://login.microsoftonline.com/consumers/oauth2/v2.0/authorize'.

Auf GitHub habe ich eine neue Beispielanwendung für ein Indy-basiertes Webserver-Framework veröffentlicht, die den Ablauf mit wenig Code implementiert. Sie startet den System-Webbrowser und leitet zur Anmeldung bei Microsoft weiter. Nach erfolgreicher Autorisierung des Zugriffs sendet die Anwendung dann eine Email an mich .

Dazu wird per HTTP POST ein JSON Dokument an die Graph API gesendet:

Delphi-Quellcode:
function TRootResource.SendMail(const AccessToken: string): string;
const
  JSON =
     '{'+ #10
    +' "message": {'+ #10
    +' "subject": "Meet for lunch?",'+ #10
    +' "body": {'+ #10
    +' "contentType": "Text",'+ #10
    +' "content": "The new cafeteria is open."'+ #10
    +' },'+ #10
    +' "toRecipients": ['+ #10
    +' {'+ #10
    +' "emailAddress": {'+ #10
    +' "address": "info@habarisoft.com"'+ #10
    +' }'+ #10
    +' }'+ #10
    +' ]'+ #10
    +' },'+ #10
    +' "saveToSentItems": "false"'+ #10
    +'}';
var
  HTTP: TIdHTTP;
  IOHandler: TIdSSLIOHandlerSocketOpenSSL;
  RequestBody: TStream;
  ResponseBody: string;
begin
  WriteLn(JSON);

  HTTP := TIdHTTP.Create;
  try
    try
      IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(HTTP);
      IOHandler.SSLOptions.SSLVersions := [sslvTLSv1_2];
      HTTP.IOHandler := IOHandler;
      HTTP.Request.CustomHeaders.Values['Authorization'] := 'Bearer ' + AccessToken;
      HTTP.Request.ContentType := 'application/json';
      RequestBody := TStringStream.Create(JSON, TEncoding.UTF8);
      ResponseBody := HTTP.Post('https://graph.microsoft.com/v1.0/me/sendMail', RequestBody);
      WriteLn('Response: "' + ResponseBody + '"');
    except
      on E: EIdHTTPProtocolException do
      begin
        WriteLn(E.Message);
        WriteLn(E.ErrorMessage);
        raise;
      end;
      on E: Exception do
      begin
        WriteLn(E.Message);
        raise;
      end;
    end;
  finally
    HTTP.Free;
  end;
end;
Screenshot der Web Browser - Seite nach dem Emailversand:

screenshot-2024-01-05-201317.png

Email im Posteingang:

screenshot-2024-01-05-201011.png

Download der Anwendung:
https://github.com/michaelJustin/dar...emo/tutorial12

Voraussetzungen: Indy, Delphi 2009 oder neuer (oder Lazarus / FPC 3.2)



Bonus: wer als Erster / Erste mir auf diesem Weg eine Email sendet, erhält eine kostenlose kommerzielle Lizenz des Frameworks
Michael Justin

Geändert von mjustin ( 6. Jan 2024 um 19:36 Uhr) Grund: Link updated
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#2

AW: Emails über Microsoft Graph API senden (mit Sourcecode)

  Alt 8. Jan 2024, 17:07
bonus: Wer als erster / erste mir auf diesem weg eine email sendet, erhält eine kostenlose kommerzielle lizenz des frameworks
Herzlichen Glückwunsch, wir haben einen Gewinner!
Eine Lizenz des Daraja HTTP Frameworks geht alsbald per PM an den Absender.

Vielen Dank für die heute um 16:23 Uhr angekommene Mail, und alles Gute für 2024
Michael Justin
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz