Spedire mail con allegato

Ecco come spedire in modo automatico mail con diverse impostazioni. Utilizziamo la funzione standard SO_NEW_DOCUMENT_ATT_SEND_API1, non proprio ben commentata.

Ecco dell’ottimo sample code commentato come si deve .

Cominciamo con un po’ di definizioni

DATA: lt_att_content_hex TYPE TABLE OF solix,
lf_lines  TYPE i,
la_mailpack TYPE sopcklsti1,
lt_mailpack TYPE TABLE OF sopcklsti1,
la_maildata TYPE sodocchgi1,
lt_receiver TYPE TABLE OF somlreci1,
ls_receiver TYPE somlreci1,
lt_mailhead TYPE TABLE OF solisti1,
ls_mailhead TYPE solisti1,
lt_mailtxt  TYPE TABLE OF solisti1,
ls_mailtxt TYPE solisti1.

Qui ci sta l’oggetto della mail:

la_maildata-obj_name = 'nome oggetto'.
la_maildata-obj_descr = 'Invio OdA'.

Qui mettiamo il testo della mail: da notare la necessità di ricavare la  lunghezza del testo

ls_mailtxt = 'vd. allegato'.
APPEND ls_mailtxt TO lt_mailtxt.

DESCRIBE TABLE lt_mailtxt LINES lf_lines.
READ TABLE lt_mailtxt INTO ls_mailtxt INDEX lf_lines.

la_maildata-doc_size = ( lf_lines - 1 ) * 255 + STRLEN( ls_mailtxt ).

CLEAR la_mailpack-transf_bin.
la_mailpack-head_start = 1.
la_mailpack-head_num = 0.
la_mailpack-body_start = 1.
la_mailpack-body_num = lf_lines.
la_mailpack-doc_type = 'RAW'.
APPEND la_mailpack TO lt_mailpack.

Aggiungiamo i destinatari della mail

ls_receiver-receiver = 'ciccio@pasticcio.it'.
ls_receiver-rec_type = 'U'. "tipo indirizzo->mail
APPEND ls_receiver TO lt_receiver.

Ora da qualche parte, per esempio nella generazione di un pdf, abbiamo riempito la tabellina lt_att_content_hex del sorgente binario dell’allegato desiderato.

DESCRIBE TABLE lt_att_content_hex LINES lf_lines.
la_maildata-doc_size = lf_lines * 255."( lf_lines - 1 ) * 255 + STRLEN( ls_mailtxt ).

la_mailpack-transf_bin = 'X'.
la_mailpack-head_start = 1.
la_mailpack-head_num = 0.
la_mailpack-body_start = 1.
la_mailpack-doc_type = 'PDF'.
la_mailpack-body_num = lf_lines.
la_mailpack-doc_size = lf_lines * 255.
la_mailpack-obj_descr = 'the allegat'.
la_mailpack-obj_name = 'Allegato'.
APPEND la_mailpack TO lt_mailpack.

Possiamo allo stesso modo aggiungere altri allegati, ora lanciamo la mail:

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = la_maildata
put_in_outbox = 'X'
commit_work = 'X'
TABLES
packing_list = lt_mailpack
contents_txt = lt_mailtxt
contents_hex = lt_att_content_hex
receivers = lt_receiver .

Ora se tutto è andato bene, possiamo andare nella SOST per vedere l’anteprima della mail generata e inviata a seconda della configurazione.

Mi raccomando, occhio allo spam!!!

Posted under ABAP, function

This post was written by Alberto on dicembre 16, 2008

Leave a Comment

Name

Email

Sito web

Commenti

More Blog Post

Previose Post: