Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Emails über Microsoft Graph API senden (mit Sourcecode) (https://www.delphipraxis.net/214399-emails-ueber-microsoft-graph-api-senden-mit-sourcecode.html)

mjustin 5. Jan 2024 19:16

Emails über Microsoft Graph API senden (mit Sourcecode)
 
Liste der Anhänge anzeigen (Anzahl: 2)
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:

Anhang 56532

Email im Posteingang:

Anhang 56531

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 :)

mjustin 8. Jan 2024 16:07

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

Zitat von mjustin (Beitrag 1531525)
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:08 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz