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

183

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 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.


RAP - Popup Defaultwerte

Kategorie - ABAP

Wie kannst du im Popup einer Aktion in RAP dem User Defaultwerte zur Verfügung stellen? In diesem Artikel erweitern wir unsere Anwendung.

21.01.2025

RAP - Popup Pflichtfelder

Kategorie - ABAP

Wie kannst du eigentlich Pflichtfelder für ein Popup in RAP definieren? In diesem Artikel werden wir etwas genauer auf die Details eingehen.

14.01.2025

RAP - Deep Table Action

Kategorie - ABAP

Ist die Übergabe von Tabellen an Aktionen in RAP aktuell möglich? Dieser Artikel soll einen besseren Einblick in das Thema gewähren.

07.01.2025

RAP - Side Effects

Kategorie - ABAP

Wie kannst du Teile der Fiori UI aktualisieren, ohne einen kompletten Refresh zu machen? Mit Side Effects ist das in ABAP und RAP ganz leicht möglich.

27.12.2024

RAP - Events

Kategorie - ABAP

Wie kannst du eigentlich Events in RAP erzeugen und mit ABAP verarbeiten? Hier erfährst du mehr zur eventgetriebenen Verarbeitung.

23.12.2024