Hi This Is soumik,
I Have Created one program to send email (External) with jpg attachment from application server......
my program is working fine but the jpg file is being corrupted ........
i am sending two files on is the first which is in application server
TEST mail .jpg is the final one which is being generated after attachment......
if you see properly you will find that picture is corrupted
pls give any solution................
IF IT_APP[] IS NOT INITIAL.
LOOP AT IT_APP INTO WA_APP.
L_APP_FILE = WA_APP-NAME .
CLEAR WA_MAILHEX.
SEARCH L_APP_FILE FOR 'test5.jpg'.
IF SY-SUBRC EQ 0.
CONCATENATE '/abcd/' WA_APP-NAME INTO LOC.
OPEN DATASET LOC FOR INPUT IN BINARY MODE.
IF SY-SUBRC EQ 0.
DO.
READ DATASET LOC INTO WA_MAILHEX .
IF SY-SUBRC EQ 0.
APPEND WA_MAILHEX TO T_MAILHEX.
CLEAR WA_MAILHEX.
ELSE.
EXIT.
ENDIF.
ENDDO.
ENDIF.
CLOSE DATASET LOC .
EXIT.
ENDIF.
ENDLOOP.
ENDIF.
WL_MAILID = WI_EMAIL-EMAIL .
APPEND WL_MAILID TO S_MAILID.
CLEAR : WL_MAILID , WI_EMAIL-EMAIL.
DATA: L_FILE(255) TYPE C,
L_INDEX TYPE SY-TABIX,
*-- For holding the split file name
TL_SPLITFILE TYPE STANDARD TABLE OF RLGRAP-FILENAME,
WL_SPLITFILE TYPE RLGRAP-FILENAME.
L_FILE = LOC .
***Function module to split the Filename and Extension from the Path
CALL FUNCTION 'TRINT_FILE_GET_EXTENSION'
EXPORTING
FILENAME = L_FILE
* UPPERCASE = 'X'
IMPORTING
EXTENSION = W_EXTN
.
***Split the filename at '.'
SPLIT L_FILE AT '.' INTO TABLE TL_SPLITFILE.
DESCRIBE TABLE TL_SPLITFILE LINES L_INDEX.
***In case the filename contains more than one dot
IF L_INDEX GT 2.
CLEAR: WL_SPLITFILE ,W_EXTN.
***Get the Extension of the file
READ TABLE TL_SPLITFILE INTO WL_SPLITFILE INDEX L_INDEX.
W_EXTN = WL_SPLITFILE.
DELETE TL_SPLITFILE INDEX L_INDEX.
DELETE TL_SPLITFILE INDEX 1.
CLEAR WL_SPLITFILE.
***Get the Actual filename
LOOP AT TL_SPLITFILE INTO WL_SPLITFILE.
CONCATENATE '.' WL_SPLITFILE INTO WL_SPLITFILE.
ENDLOOP.
CONCATENATE W_FILE WL_SPLITFILE INTO W_FILE.
ENDIF.
CONDENSE W_EXTN.
*********************************************************************************
*********************************************************************************
***For Email Body.
***Local data declaration to hold the textpool
DATA: TL_TEXTPOOL TYPE STANDARD TABLE OF TEXTPOOL,
WL_TEXTPOOL TYPE TEXTPOOL.
***Read the Entire Textpool into an Internal table
READ TEXTPOOL SY-REPID INTO TL_TEXTPOOL LANGUAGE SY-LANGU.
IF SY-SUBRC IS INITIAL.
SORT TL_TEXTPOOL BY ID KEY.
ENDIF.
***Font start
CLEAR WA_CONTENTS.
WA_CONTENTS-LINE = C_STYLE_START.
APPEND WA_CONTENTS TO T_CONTENTS.
DATA : L_LINE TYPE CHAR255.
CLEAR WA_CONTENTS.
*-- New line
CLEAR WA_CONTENTS.
CONCATENATE : 'Dear' WI_EMAIL-F_NAME WI_EMAIL-L_NAME ',' INTO L_LINE SEPARATED BY SPACE.
WA_CONTENTS-LINE = L_LINE.
APPEND WA_CONTENTS TO T_CONTENTS.
CLEAR : WA_CONTENTS , L_LINE.
*-- New line
CLEAR WA_CONTENTS.
WA_CONTENTS-LINE = C_NEW_LINE .
APPEND WA_CONTENTS TO T_CONTENTS.
***New line
CONCATENATE : 'Thanks For Your Interest in UNITECH Project' WI_EMAIL-PROJECT '.' INTO L_LINE SEPARATED BY SPACE.
WA_CONTENTS-LINE = L_LINE .
APPEND WA_CONTENTS TO T_CONTENTS.
CLEAR : WA_CONTENTS , L_LINE.
*-- New line
CLEAR WA_CONTENTS.
WA_CONTENTS-LINE = C_NEW_LINE.
APPEND WA_CONTENTS TO T_CONTENTS.
*-- New line
CLEAR WA_CONTENTS.
L_LINE = 'One Of Our Sales Executive Will Contact You Shortly .'.
WA_CONTENTS-LINE = L_LINE.
APPEND WA_CONTENTS TO T_CONTENTS.
*-- Subject of the Mail
DATA : L_SUBJECT_MAIL TYPE STRING.
* CONCATENATE : 'Dear' WI_EMAIL-F_NAME WI_EMAIL-L_NAME ',' INTO L_SUBJECT_MAIL SEPARATED BY SPACE.
W_MAIL_SUBJ = 'Test Mail'.
DATA: L_SEND_REQUEST TYPE REF TO CL_BCS,
L_DOCUMENT TYPE REF TO CL_DOCUMENT_BCS,
L_SENDER TYPE REF TO CL_SAPUSER_BCS,
L_SUB TYPE CHAR50,
L_RECIPIENT TYPE REF TO IF_RECIPIENT_BCS,
TL_CONTENTS TYPE STANDARD TABLE OF SOLI,
L_DOC_LEN TYPE SO_OBJ_LEN,
L_CNT TYPE SY-TABIX,
L_RCV_EMAIL TYPE ADR6-SMTP_ADDR,
L_RESULT TYPE SY-BINPT,
L_BCS_EXCEPTION TYPE REF TO CX_BCS,
L_SUBJ TYPE STRING.
TRY.
*-- Create persistent send request
L_SEND_REQUEST = CL_BCS=>CREATE_PERSISTENT( ).
TL_CONTENTS[] = T_CONTENTS[].
*-- Get the length of the Document
DESCRIBE TABLE TL_CONTENTS LINES L_CNT.
READ TABLE TL_CONTENTS INTO WA_CONTENTS INDEX L_CNT.
L_DOC_LEN = ( L_CNT - 1 ) * 255 + STRLEN( WA_CONTENTS ).
*-- Subject of the mail
L_SUB = W_MAIL_SUBJ.
*-- Create Document
L_DOCUMENT = CL_DOCUMENT_BCS=>CREATE_DOCUMENT(
I_TYPE = C_TYP
I_TEXT = TL_CONTENTS
I_LENGTH = L_DOC_LEN
I_SUBJECT = L_SUB
I_LANGUAGE = SY-LANGU
I_IMPORTANCE = '1' ).
*-- Subject of the mail
MOVE W_MAIL_SUBJ TO L_SUBJ.
W_DOCUMENT = L_DOCUMENT.
TRY.
*-- Set the Message Subject
CALL METHOD L_SEND_REQUEST->SET_MESSAGE_SUBJECT
EXPORTING
IP_SUBJECT = L_SUBJ.
CATCH CX_SY_DYN_CALL_ILLEGAL_METHOD.
ENDTRY.
*-- Add document to send request
CALL METHOD L_SEND_REQUEST->SET_DOCUMENT( L_DOCUMENT ).
*-- Do send delivery info for successful mails
CALL METHOD L_SEND_REQUEST->SET_STATUS_ATTRIBUTES
EXPORTING
I_REQUESTED_STATUS = 'E'
I_STATUS_MAIL = 'A'.
*-- Set sender
L_SENDER = CL_SAPUSER_BCS=>CREATE( SY-UNAME ).
CALL METHOD L_SEND_REQUEST->SET_SENDER
EXPORTING
I_SENDER = L_SENDER.
*-- To frame the attachments for the mail
*-- Local Data declaration
DATA: L_SUBJECT TYPE SO_OBJ_DES,
L_ATT_TYPE TYPE SOODK-OBJTP.
*-- Subject of the Attachment
L_SUBJECT = W_FILE.
*-- Format of the Attachment
L_ATT_TYPE = W_EXTN.
IF T_MAILHEX[] IS NOT INITIAL.
TRY.
*-- Add Attachment to the Document
CALL METHOD W_DOCUMENT->ADD_ATTACHMENT
EXPORTING
I_ATTACHMENT_TYPE = L_ATT_TYPE
I_ATTACHMENT_SUBJECT = 'TEST Mail'
I_ATT_CONTENT_HEX = T_MAILHEX.
CATCH CX_DOCUMENT_BCS.
ENDTRY.
ENDIF.
*-- Add the recipients to the Send mail
LOOP AT S_MAILID INTO WL_MAILID.
L_RCV_EMAIL = WL_MAILID.
CHECK NOT L_RCV_EMAIL IS INITIAL.
L_RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS(
L_RCV_EMAIL ).
CALL METHOD L_SEND_REQUEST->ADD_RECIPIENT
EXPORTING
I_RECIPIENT = L_RECIPIENT
I_EXPRESS = 'X'.
ENDLOOP.
*-- Send Email
CALL METHOD L_SEND_REQUEST->SEND(
EXPORTING
I_WITH_ERROR_SCREEN = 'X'
RECEIVING
RESULT = L_RESULT ).
IF L_RESULT = 'X'.
MESSAGE
'Mail Sent Successfully Sent' TYPE 'S'.
ENDIF.
CATCH CX_BCS INTO L_BCS_EXCEPTION.
IF L_RESULT NE 'X'.
MESSAGE
' Mail Not Successfully sent' TYPE 'I' .
ENDIF.
ENDTRY.
COMMIT WORK.