gelöst Mail Senden klappt nicht


Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV

Moderatoren: Jan, Steff

gelöst Mail Senden klappt nicht

Beitragvon SaskuAc » 09.01.2018, 15:23

Hallo Zusammen,

ich habe bei uns eine Klasse geschrieben, welche Mails versendet. Eigentlich kein Problem. Haben die Klasse in 3 Programmen schon im Einsatz und funktioniert super.
Allerdings habe ich jetzt einen alten FuBa umgeschrieben, bzw. etwas vereinfacht und versucht diese Klasse zu verwenden.

Aber hier funktioniert es einfach nicht. Warum auch immer. Ich habe im vergleich zu den anderen Mails ein paar kleine Unterschiede.
Einer davon ist, dass ich den Inhalt als Binary code einschreibe - was aber schon funktioniert hat. In der Klasse sieht das dann so aus:

Code: Alles auswählen
    CASE im_type.
      WHEN 'RAW'. " wird sonst verwendet
*   Dokument erzeugen
        mo_document = cl_document_bcs=>create_document( i_type    = im_type
                                                        i_text    = im_body
                                                        i_subject = im_subject ).
      WHEN 'HTM'. " wird vom  'Problem FuBa' verwendet
*   Dokument erzeugen
        mo_document = cl_document_bcs=>create_document( i_type    = im_type
                                                        i_hex     = im_hex
                                                        i_subject = im_subject ).
    ENDCASE.
    mo_send_request->set_document( mo_document ).


ein weiterer Unterschied ist, dass ich bei meinem send nicht's sofort weg sende, sondern die Mail einfach so sende, hier jetzt mal die Send Methode:

Code: Alles auswählen
        TRY.
        mo_send_request->set_send_immediately( iv_immadiately ).
        mo_send_request->send( ).
      CATCH cx_send_req_bcs.
        RAISE email_error.
    ENDTRY.
    COMMIT WORK.


Im FuBa schaut das senden dann so aus: ( Mail adressen rausgestrichen )

Code: Alles auswählen
     
      CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
        EXPORTING
          text   = lv_html
        IMPORTING
          buffer = lv_xhtml
        EXCEPTIONS
          failed = 1
          OTHERS = 2.

      CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
        EXPORTING
          buffer     = lv_xhtml
        TABLES
          binary_tab = lt_hex.
...
...
...
 CREATE OBJECT lo_mail.

      lo_mail->set_sender( iv_smtpadr = '---' ).
      lo_mail->add_recipient( iv_smtpadr = '---' ).
      lo_mail->add_recipient( iv_smtpadr = '---' ).
      lo_mail->set_subject( lv_subject ).
      lo_mail->set_content( im_type = 'HTM' im_hex = lt_hex im_subject = lv_subject ).
      lo_mail->send( ).

    CATCH cx_bcs INTO lox_bcs_exception.
      lv_message = lox_bcs_exception->get_text( ).
      MESSAGE e000(su) WITH lv_message.
  ENDTRY.


set_sender sowie die add_recipient methoden laufen auch super durch ohne fehler zu werfen oder sonstiges.
Was mich wundert, es wird halt kein Eintrag in die SOST geschrieben, sodass ich eventuell einen überblick hätte was hier falsch läuft, bzw. richtig...

kann man mir hier vielleicht helfen .. ich bin echt ein wenig verzweifelt...
SaskuAc
Specialist
 
Beiträge: 169
Registriert: 01.06.2015, 10:16
Dank erhalten: 15 mal
Ich bin: Entwickler/in

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: Mail Senden klappt nicht

Beitragvon zzcpak » 09.01.2018, 15:37

wieso verwendest du bei cl_document_bcs=>create_document bei HTML-Mail I_HEX und nicht ganz normal I_TEXT?

Code: Alles auswählen
        DATA(lo_document) = cl_document_bcs=>create_document(
                              i_type = 'HTM'
                              i_text = lt_mailtext
                              i_subject = iv_title ).
 


hatte das in einem meiner Reports auch mal in diesem Format senden müssen und das funktioniert so auch wie gewünscht.
Aber ich hätte ja auch erwartet, dass man in SOST etwas sieht.
zzcpak
Expert
 
Beiträge: 587
Registriert: 29.07.2003, 15:10
Dank erhalten: 47 mal

Re: Mail Senden klappt nicht

Beitragvon a-dead-trousers » 09.01.2018, 20:08

SaskuAc hat geschrieben:Was mich wundert, es wird halt kein Eintrag in die SOST geschrieben, sodass ich eventuell einen überblick hätte was hier falsch läuft, bzw. richtig...

Hast du im Programmlauf danach vielleicht irgendwo ein ROLLBACK WORK drinnen oder es mit einem expliziten COMMIT WORK schon versucht?
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40
a-dead-trousers
Top Expert
 
Beiträge: 2996
Registriert: 07.02.2011, 13:40
Dank erhalten: 743 mal
Ich bin: Entwickler/in

Re: Mail Senden klappt nicht

Beitragvon SaskuAc » 11.01.2018, 12:22

@zzcpak z. B. bei HTML Text musst du den HEX-Parameter nehmen.
@a-dead-trousers es gab keinen Rollback und es gab auch explizit commit work.

Allerdings habe ich inzwischen den Fehler gefunden. Es liegt daran, dass nebenbei noch andere Background Tasks in der PA30 laufen, d. h. die Tasks haben sich überschnitten und somit ist das programm mit den commits nicht klar gekommen. Jetzt habe ich allerdings eine VERDAMMT WUNDERVOLLE Lösung gefunden.

Und zwar lösche ich jetzt die E-Mail Klasse und nehme stattdessen CL_BCS_MESSAGE her, welche eine wirklich super funktioniert! Und, im gegensatz zu CL_BCS kann sie "in update task" aufgerufen werden ohne probleme zu verursachen. Dazu muss nur eine Methode mit ner flag dieser Klasse aufgerufen werden und schon funktioniert alles wunderbar.

Werde tatsächlich nur noch CL_BCS_MESSAGE zum mailsenden verwenden. Ab dem nächsten Release ( also firmenintern ) wird nichts anderes mehr zum mailsenden verwendet!

Für diese Nachricht hat SaskuAc einen Dank bekommen :
zzcpak
SaskuAc
Specialist
 
Beiträge: 169
Registriert: 01.06.2015, 10:16
Dank erhalten: 15 mal
Ich bin: Entwickler/in

Re: Mail Senden klappt nicht

Beitragvon zzcpak » 11.01.2018, 14:26

SaskuAc hat geschrieben:@zzcpak z. B. bei HTML Text musst du den HEX-Parameter nehmen.


muss man nicht. Geht auch mit normalem Text

Code: Alles auswählen
DATA:
  go_mail         TYPE REF TO cl_bcs_message,
  lv_mail_content TYPE string.

CREATE OBJECT go_mail.

go_mail->set_subject( 'HTML Mail' ).

lv_mail_content = '<html><style>h3 { color: blue; }</style>' &amp;&amp;
                  '<h3>Überschrift in Blau</h3>' &amp;&amp;
                  '<p>noch a bisserl text</p></html>'.

go_mail->set_main_doc(
           iv_contents_txt = lv_mail_content
           iv_doctype      = 'HTM' ).

go_mail->add_recipient( '<deinemail@adresse.ext>' ).

DATA(gt_error) = go_mail->send( ).
 


Aber die Klasse CL_BCS_MESSAGE war mir auch noch nicht geläufig. Scheint mir etwas einfacher zu handhaben.
zzcpak
Expert
 
Beiträge: 587
Registriert: 29.07.2003, 15:10
Dank erhalten: 47 mal


Zurück zu ABAP® Core

  Aktuelle Beiträge   
gelöst Nachricht nach Beendigung der Verbuchung
vor 4 Stunden von ewx 2 Antw.
BCS sendet Mails immer als express?
vor 5 Stunden von Legxis 2 Antw.
Zuordnung in Grid (Screen)
vor 9 Stunden von HH_ABAP 0 Antw.
FBL3N ---> FB60
vor 10 Stunden von HH_ABAP 2 Antw.
Klasse zum lesen der Adressdaten
vor 9 Stunden von AdrianSchm 2 Antw.

  Ähnliche Beiträge beta
Mail aus SAP senden mit Anhang
30.01.2006, 15:23 von gast 1 Antw.
Int. Tab. per Mail als Excel (CSV) senden
13.04.2006, 13:15 von ewx 3 Antw.
Sy-repid klappt nicht für Funktionsbaustein
04.07.2008, 13:01 von Witchcraft 0 Antw.
Senden von Objekten (z.B. Meldung) via Mail als Anlage
23.02.2005, 08:27 von Gast 3 Antw.
E-Mail senden mit SMIME-Signatur und Verschlüsselung
21.09.2017, 12:02 von alex-s. 2 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]

cron