This is a test message to test the length of the message box.
Login
|
BTP Anbindung Office365 Mail
Erstellt von Software-Heroes

BTP - Anbindung Office365 E-Mail

867

In diesem Artikel wollen wir uns anschauen, wie wir einen Office365 Mailserver an das ABAP Environment anschließen und konfigurieren.

Werbung


Das ABAP Environment hat normalerweise keinen eigenen Mailserver und braucht daher eine Konfiguration um E-Mails verschicken zu können. In diesem Artikel werden wir auf die Anbindung eines Cloud SMTP Servers eingehen und wie wir diesen an das ABAP Environment anschließen, um E-Mails zu versenden.

 

Einleitung

Für die Anbindung verwenden wir den Office365 Server, über diesen wickeln die meisten Unternehmen ihr E-Mails ab, wenn sie auf Microsoft Produkte setzen. Dabei arbeiten wir mit einem technischen User und der Basic Authentication (User und Passwort), um uns am Server anzumelden.

 

Verbindung

Um die Verbindung einzurichten, müssen wir die App "Communication Systems" im Launchpad des ABAP Environment aufrufen. Dort legen wir über "New" ein neues System an. Dabei ist die System ID und der Name egal, kann also frei vergeben werden.

 

Als Nächstes tragen wir im Abschnitt "Technical Data" Server und Port für Office365 ein, die Daten findest du leicht über die Suchmaschine deiner Wahl:

 

Nun muss im Abschnitt "Users for Outbound Communication" die Authentifizierung angelegt werden. Dazu wählen wir die Methode User/Passwort, um uns am Server anzumelden.

 

Für den letzten Schritt müssen wir in die App "Communiation Arrangements" wechseln, um dort das Szenario mit dem System zu verbinden. Über den Button "New" legen wir ein entsprechenden Arrangement an. Das Szenario findest du über die Suchhilfe, wenn du nach "Mail" suchst. Wir benötigen die ID SAP_COM_0548:

 

Nun muss im Abschnitt "Common Data" nur noch das Szenario mit dem Communication System verbunden werden, damit ist die Grundkonfiguration im System abgeschlossen:

 

Konfiguration

Nachdem die Verbindung zum Server hergestellt wurde, müssen wir noch das System konfigurieren. Dazu gehört es die Sender und Empfängerlisten zu pflegen, ohne diese Konfiguration kann aus dem System keine Mail verschickt werden. Die API gibt es aktuell nur in Form von ABAP Klassen und nicht als Fiori App, deshalb erfolgt die weitere Konfiguration über eine ausführbare ABAP Klasse.

 

Setzen

Im ersten Schritt setzen wir die wichtigsten Einstellungen, dazu benötigen wir im ersten Schritt ein Mail Konfigurationsobjekt, dieses erzeugen wir über die entsprechende API:

DATA(lo_config) = cl_bcs_mail_system_config=>create_instance( ).

 

Über dieses Objekt können wir nun die weiteren Einstellungen setzen, die Prüfung aktivieren, das Verfallsdatum setzen und den Default-Absender setzen:

lo_config->set_address_check_active( abap_true ).
lo_config->set_days_until_mail_expires( 7 ).
lo_config->modify_default_sender_address( iv_default_address = 'BTP-noreply@CONNECT.com'
                                          iv_default_name    = '' ).

 

Ist die Adressprüfung nun aktiviert, müssen wir im nächsten Schritt Absender und Empfänger setzen, sodass wir die E-Mails aus dem System setzen können.

" Set sender
DATA(lt_allowed_sender) = VALUE cl_bcs_mail_system_config=>tyt_sender_domains( ( '*@CONNECT.com' ) ).
lo_config->add_allowed_sender_domains( it_allowed_sender_domains = lt_allowed_sender ).

" Set receiver
DATA(lt_allowed_receiver) = VALUE cl_bcs_mail_system_config=>tyt_recipient_domains( ( '*@CONNECT.com' )
                                                                                    ( '*@OTHERS.com' ) ).
lo_config->add_allowed_recipient_domains( it_allowed_rec_domains = lt_allowed_receiver ).

 

Hinweis: Für die Freischaltung der Domains können wir mit Wildcard arbeiten. Da in unserem Fall der Absender als Default Absender feststeht, reicht die eine Domain. Als Empfänger sollten alle relevanten Domains freigeschaltet werden.

 

Lesen

Die gesetzte Konfiguration kannst du auch entsprechend lesen, um die Einstellungen zu prüfen und später noch einmal anzupassen. Mit der API hast du so die Möglichkeit, auch eine Anwendung für die Pflege zur Verfügung zu stellen. Ein Beispielcoding für das Lesen der Daten findest du unten im vollständigen Beispiel.

 

Vollständiges Beispiel

Wie du es bereits aus unseren alten Artikeln gewohnt bist, hier noch einmal das vollständige Beispielcoding in Form der ausführbaren Klasse. Die Methoden in der Main Methode können entsprechend ein- und auskommentiert werden.

CLASS zcl_bs_demo_mail_config DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC.

  PUBLIC SECTION.
    INTERFACES if_oo_adt_classrun.

  PRIVATE SECTION.
    METHODS get_configuration
      IMPORTING io_out TYPE REF TO if_oo_adt_classrun_out.

    METHODS set_configuration
      IMPORTING io_out TYPE REF TO if_oo_adt_classrun_out.
ENDCLASS.


CLASS zcl_bs_demo_mail_config IMPLEMENTATION.
  METHOD if_oo_adt_classrun~main.
    get_configuration( out ).
*    set_configuration( out ).
  ENDMETHOD.


  METHOD get_configuration.
    DATA(lo_config) = cl_bcs_mail_system_config=>create_instance( ).

    io_out->write( |Check active: { lo_config->get_address_check_active( ) }| ).

    io_out->write( |Expires: { lo_config->get_days_until_mail_expires( ) }| ).

    io_out->write( |Sender domains:| ).
    DATA(lt_sender_domains) = lo_config->read_allowed_sender_domains( ).
    io_out->write( lt_sender_domains ).

    io_out->write( |Receiver domains:| ).
    DATA(lt_rec_domains) = lo_config->read_allowed_recipient_domains( ).
    io_out->write( lt_rec_domains ).

    lo_config->read_default_sender_address( IMPORTING ev_default_sender_address = DATA(ld_address)
                                                      ev_default_sender_name    = DATA(ld_name) ).
    io_out->write( |Sender address: { ld_address }| ).
    io_out->write( |Sender name: { ld_name }| ).
  ENDMETHOD.


  METHOD set_configuration.
    DATA(lo_config) = cl_bcs_mail_system_config=>create_instance( ).

    TRY.
        lo_config->set_address_check_active( abap_true  ).
        io_out->write( `Check activated` ).

      CATCH cx_bcs_mail_config.
        io_out->write( `Error in activation` ).
        RETURN.
    ENDTRY.

    TRY.
        lo_config->set_days_until_mail_expires( 7 ).
        io_out->write( `Expiry days set to 7` ).

      CATCH cx_bcs_mail_config.
        io_out->write( `Error while set the new days` ).
    ENDTRY.

    TRY.
        DATA(lt_allowed_receiver) = VALUE cl_bcs_mail_system_config=>tyt_recipient_domains( ( '*@CONNECT.com' )
                                                                                            ( '*@OTHERS.com' ) ).

        lo_config->add_allowed_recipient_domains( it_allowed_rec_domains = lt_allowed_receiver ).
        io_out->write( `Allowlist receiver added` ).

      CATCH cx_bcs_mail_config.
        io_out->write( `Error in allowlist receiver` ).
    ENDTRY.

    TRY.
        DATA(lt_allowed_sender) = VALUE cl_bcs_mail_system_config=>tyt_sender_domains( ( '*@CONNECT.com' ) ).

        lo_config->add_allowed_sender_domains( it_allowed_sender_domains = lt_allowed_sender ).
        io_out->write( `Allowlist sender added` ).

      CATCH cx_bcs_mail_config.
        io_out->write( `Error in allowlist sender` ).
    ENDTRY.

    TRY.
        lo_config->modify_default_sender_address( iv_default_address = 'BTP-noreply@CONNECT.com'
                                                  iv_default_name    = '' ).
        io_out->write( `Default sender set` ).

      CATCH cx_bcs_mail_config.
        io_out->write( `Error with default data` ).
    ENDTRY.
  ENDMETHOD.
ENDCLASS.

 

Fazit

Die Grundkonfiguration des Mailservers und des Systems ist nicht so kompliziert, erfordert aber einige Schritte der Vorbereitung und einige Daten, um die Konfiguration zu finalisieren. Du solltest auch die nötigen Apps und Berechtigungen haben, wenn du das System konfigurierst.


Enthaltene Themen:
BTPRAPABAP EnvironmentOffice365
Kommentare (0)



Und weiter ...

Bist du zufrieden mit dem Inhalt des Artikels? Wir posten jeden Dienstag und Freitag neuen Content im Bereich ABAP und unregelmäßig in allen anderen Bereichen. Schaue bei unseren Tools und Apps vorbei, diese stellen wir kostenlos zur Verfügung.


BTP - Pakete und SWC bereinigen

Kategorie - ABAP

Du möchtest ein Pakete im ABAP Environment löschen, doch es gibt noch Objekte die blockieren und vielleicht gar nicht mehr in Eclipse sichtbar sind? Schauen wir uns dazu einige Punkte zur Bereinigung an.

25.09.2026

RAP - Sales App Learnings

Kategorie - ABAP

Das Tutorial für die Sales App ist zu Ende und dieses Mal wurde eine große Bandbreite an Themen und Bereichen adressiert. In diesem Artikel schauen wir auf das Gelernte und wichtige Punkte.

08.09.2026

RAP - Navigation (App to App)

Kategorie - ABAP

Wie kannst du eigentlich innerhalb deiner Fiori Anwendung auf eine andere Anwendung navigieren, ohne das der User die App manuell wechseln muss? Schauen wir uns die Navigation zwischen Fiori Apps an.

01.09.2026

RAP - Singleton Pattern

Kategorie - ABAP

Das Singleton Pattern in RAP gibt es schon länger, doch wie genau funktioniert es und wie kannst du es auch für andere Use-Cases nutzen? Schauen wir uns dazu die Details in diesem Artikel an.

25.08.2026

RAP - Nativer Datei-Upload

Kategorie - ABAP

Du willst eine Datei in deine RAP Application hochladen und im Anschluss verarbeiten? Die offizielle Lösung für Up- und Download lässt noch warten, mit einem kleinen Umweg ist es aber bereits Heute möglich.

18.08.2026