DATA: lv_recipient TYPE adr6-smtp_addr.
DATA: lv_subject TYPE string.
lv_recipient = 'email@email.com'.
lv_subject = 'Testemail'.
DATA(lv_html_text) = VALUE string( ).
lv_html_text = |<BODY> | &&
|<P><B>Test</B></BR>| &&
|</BODY>|.
DATA(it_body_txt) = cl_document_bcs=>string_to_soli( ip_string = lv_html_text ).
TRY.
* it_body_txt beinhaltet die Zeilen des Body-Textes
* die Zeilen sind jeweils char255 Zeichen lang
* eine Zeile (line) ist vom Typ SOLI
* Document (Mail) erzeugen
* Email-Subject (i_subject) darf hier max. 50 Zeichen lang sein (Subject-Darstellung in der SOST)
* die "richtige" Übergabe des Email-Subjects erfolgt weiter unten in der Funktion set_message_subject( )
DATA(o_document) = cl_document_bcs=>create_document( i_type = 'HTM'
i_text = it_body_txt
i_subject = CONV so_obj_des( lv_subject ) ).
* Sendrequest erzeugen
DATA(o_send_request) = cl_bcs=>create_persistent( ).
* Email-Subject festlegen, ip_subject ist vom Typ String
o_send_request->set_message_subject( ip_subject = lv_subject ).
* Die Mail an den Sendrequest hängen
o_send_request->set_document( o_document ).
* SAP-User als Sender
DATA(o_sender) = cl_sapuser_bcs=>create( sy-uname ).
* Email-Adresse als Sender
* DATA(o_sender) = cl_cam_address_bcs=>create_internet_address( i_address_string = 'email@email.com' ).
o_send_request->set_sender( o_sender ).
* Empfänger -> beachte: u.U. sind Email-Adressen mit Umlauten nicht zulässig -> Exception
DATA(o_recipient) = cl_cam_address_bcs=>create_internet_address( lv_recipient ).
o_send_request->add_recipient( i_recipient = o_recipient
i_express = abap_true
" i_copy = abap_true " CC
" i_blind_copy = abap_true " BCC
).
* Sofort senden
o_send_request->set_send_immediately( abap_true ).
* Dokument senden
IF o_send_request->send( i_with_error_screen = abap_true ) = abap_true.
WRITE: / 'Email gesendet.'.
ELSE.
WRITE: / 'Fehler beim Email-Versand.'.
ENDIF.
DATA: lv_in_update_task TYPE sy-subrc.
* Überprüft, ob das Programm im Verbucher abläuft
CALL FUNCTION 'TH_IN_UPDATE_TASK'
IMPORTING
in_update_task = lv_in_update_task.
IF lv_in_update_task EQ 0.
* Persistenzdienste des Objektes starten, sonst wird ggf. die Mail nicht gesendet
COMMIT WORK.
ENDIF.
CATCH cx_root INTO DATA(e_text).
WRITE: / e_text->get_text( ).
ENDTRY.