Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 9990

Sending Mail With JPG Attachment

$
0
0

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.


Viewing all articles
Browse latest Browse all 9990

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>