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!!!
This post was written by Alberto on dicembre 16, 2008
