Calling the SMTPSEND2 command from Net.Data Scripts or CL Programs - Support

Calling the SMTPSEND2 command from Net.Data Scripts or CL Programs

From Support

Jump to: navigation, search
If you have a question or seek clarification, please call Technical Support.

Problem:

You want to call the SMTPSEND2 command from a Net.Data web macro to send email. The following RPG and CL programs illustrate how to call the SMTPSEND2 command. The call to the RPG program can then be tapped into a Net.Data macro to call the program from a web browser.

Solution:

The following RPGLE program calls SMTPSEND2 and will accomodate up to 5 To, CC or BCC addresse and 1 attachment file. Ths program can easily be modified to allow for multiple attachments as well.

ILE RPG Sample Program TSTNETDT1R:


    D*****************************************************************
     C* Sample Program for Sending Email via SMTPSEND2
     C*****************************************************************
     D cmd             S           3000         INZ(' ')
     D toaddr          S           3000         INZ(' ')
     D ccaddr          S           3000         INZ(' ')
     D bccaddr         S           3000         INZ(' ')
     D quot            S              1         INZ('''')

     D*****************************************************************
     C* MAIN LINE CALCULATIONS
     C*****************************************************************
     C*** Entry Parms
     C     *ENTRY        PLIST
     C                   PARM                    InFrom          100
     C                   PARM                    InSubject       100
     C                   PARM                    InMessage      5000
     C                   PARM                    InToAddr1       100
     C                   PARM                    InToAddr2       100
     C                   PARM                    InToAddr3       100
     C                   PARM                    InToAddr4       100
     C                   PARM                    InToAddr5       100
     C                   PARM                    InCCAddr1       100
     C                   PARM                    InCCAddr2       100
     C                   PARM                    InCCAddr3       100
     C                   PARM                    InCCAddr4       100
     C                   PARM                    InCCAddr5       100
     C                   PARM                    InBCCAddr1      100
     C                   PARM                    InBCCAddr2      100
     C                   PARM                    InBCCAddr3      100
     C                   PARM                    InBCCAddr4      100
     C                   PARM                    InBCCAddr5      100
     C                   PARM                    Inattach        255
     C                   PARM                    ErrRtn            1

      *                  ** Build To Email Address List
     C                   If        %trim(InToAddr1) <> ''
     C                   Eval      ToAddr = %trim(ToAddr) + ' ' + quot +
     C                             %trim(InToAddr1) + quot
     C                   Endif
     C                   If        %trim(InToAddr2) <> ''
     C                   Eval      ToAddr = %trim(ToAddr) + ' ' + quot +
     C                             %trim(InToAddr2) + quot
     C                   Endif
     C                   If        %trim(InToAddr3) <> ''
     C                   Eval      ToAddr = %trim(ToAddr) + ' ' + quot +
     C                             %trim(InToAddr3) + quot
     C                   Endif
     C                   If        %trim(InToAddr4) <> ''
     C                   Eval      ToAddr = %trim(ToAddr) + ' ' + quot +
     C                             %trim(InToAddr4) + quot
     C                   Endif
     C                   If        %trim(InToAddr5) <> ''
     C                   Eval      ToAddr = %trim(ToAddr) + ' ' + quot +
     C                             %trim(InToAddr5) + quot
     C                   Endif

      *                  ** Build CC Email Address List
     C                   If        %trim(InCCAddr1) <> ''
     C                   Eval      CCAddr = %trim(CCAddr) + ' ' + quot +
     C                             %trim(InCCAddr1) + quot
     C                   Endif
     C                   If        %trim(InCCAddr2) <> ''
     C                   Eval      CCAddr = %trim(CCAddr) + ' ' + quot +
     C                             %trim(InCCAddr2) + quot
     C                   Endif
     C                   If        %trim(InCCAddr3) <> ''
     C                   Eval      CCAddr = %trim(CCAddr) + ' ' + quot +
     C                             %trim(InCCAddr3) + quot
     C                   Endif
     C                   If        %trim(InCCAddr4) <> ''
     C                   Eval      CCAddr = %trim(CCAddr) + ' ' + quot +
     C                             %trim(InCCAddr4) + quot
     C                   Endif
     C                   If        %trim(InCCAddr5) <> ''
     C                   Eval      CCAddr = %trim(CCAddr) + ' ' + quot +
     C                             %trim(InCCAddr5) + quot
     C                   Endif

      *                  ** Build BCC Email Address List
     C                   If        %trim(InBCCAddr1) <> ''
     C                   Eval      BCCAddr = %trim(BCCAddr) + ' '+ quot +
     C                             %trim(InBCCAddr1) + quot
     C                   Endif
     C                   If        %trim(InBCCAddr2) <> ''
     C                   Eval      BCCAddr = %trim(BCCAddr) + ' '+ quot +
     C                             %trim(InBCCAddr2) + quot
     C                   Endif
     C                   If        %trim(InBCCAddr3) <> ''
     C                   Eval      BCCAddr = %trim(BCCAddr) + ' '+ quot +
     C                             %trim(InBCCAddr3) + quot
     C                   Endif
     C                   If        %trim(InBCCAddr4) <> ''
     C                   Eval      BCCAddr = %trim(BCCAddr) + ' '+ quot +
     C                             %trim(InBCCAddr4) + quot
     C                   Endif
     C                   If        %trim(InBCCAddr5) <> ''
     C                   Eval      BCCAddr = %trim(BCCAddr) + ' '+ quot +
     C                             %trim(InBCCAddr5) + quot
     C                   Endif

      *                  ** Build SMTPSEND2 command call
     C                   Eval      CMD = 'RJSSMTP/SMTPSEND2 ' +
     C                             'FROMADDR(' + quot +
     C                             %TRIMR(InFrom) + quot + ') '  +
     C                             'SUBJECT(' + quot +
     C                             %TRIMR(InSubject) + quot + ') '  +
     C                             'MESSAGE(' + quot +
     C                             %TRIMR(InMessage) + quot + ') '  +
     C                             'TOADDR(' +
     C                             %TRIMR(ToAddr) +  ') '  +
     C                             'CCADDR(' +
     C                             %TRIMR(CCAddr) +  ') '  +
     C                             'BCCADDR(' +
     C                             %TRIMR(BccAddr) + ')'

      *                  ** Add attachment to SMTPSEND2 command call
      *                  ** if an attach file name was passed.
     C                   If        %trim(InAttach) <> ''
     C                   Eval      CMD = %trim(CMD) + ' ' +
     C                             'ATTACHMENT(' + quot +
     C                             %TRIMR(InAttach) + quot + ')'
     C                   Endif

      *                  ** Call SMTPSEND2 command
     C                   call      'QCMDEXC'                            56
     C                   PARM                    CMD
     C                   PARM      3000          LEN              15 5

     C*                  ** Set return code for success or failure
     C                   If        *IN56 = *ON
     C*                  ** Error occurred on SMTPSEND2 call
     C*                  ** check the joblog
     C                   Eval      ErrRtn = '1'
     C                   Else
     C*                  ** Email sent successfully
     C                   Eval      ErrRtn = '0'
     C                   Endif

     C                   EVAL      *INLR = *ON
     C                   Return


The following CL program illustrates how to call the TSTNETDT1R program:

CL Sample Program TSTNETDT1C:

             PGM
             
             DCL        VAR(&FROMADDR) TYPE(*CHAR) LEN(100)
             DCL        VAR(&SUBJECT) TYPE(*CHAR) LEN(100)
             DCL        VAR(&MSG) TYPE(*CHAR) LEN(5000)
             DCL        VAR(&TO1) TYPE(*CHAR) LEN(100)
             DCL        VAR(&TO2) TYPE(*CHAR) LEN(100)
             DCL        VAR(&TO3) TYPE(*CHAR) LEN(100)
             DCL        VAR(&TO4) TYPE(*CHAR) LEN(100)
             DCL        VAR(&TO5) TYPE(*CHAR) LEN(100)
             DCL        VAR(&CC1) TYPE(*CHAR) LEN(100)
             DCL        VAR(&Cc2) TYPE(*CHAR) LEN(100)
             DCL        VAR(&CC3) TYPE(*CHAR) LEN(100)
             DCL        VAR(&CC4) TYPE(*CHAR) LEN(100)
             DCL        VAR(&CC5) TYPE(*CHAR) LEN(100)
             DCL        VAR(&BCC1) TYPE(*CHAR) LEN(100)
             DCL        VAR(&BCC2) TYPE(*CHAR) LEN(100)
             DCL        VAR(&BCC3) TYPE(*CHAR) LEN(100)
             DCL        VAR(&BCC4) TYPE(*CHAR) LEN(100)
             DCL        VAR(&BCC5) TYPE(*CHAR) LEN(100)
             DCL        VAR(&IFSATTACH) TYPE(*CHAR) LEN(255)
             DCL        VAR(&ERRRTN) TYPE(*CHAR) LEN(1)

/* SET PARMS FOR EMAIL SEND PROGRAM */
             CHGVAR     VAR(&FROMADDR) VALUE('richard@rjssoft.com')
             CHGVAR     VAR(&SUBJECT) VALUE('Net.Data Test')
             CHGVAR     VAR(&MSG) VALUE('This is a test message')
             CHGVAR     VAR(&TO1) VALUE('richard@rjssoft.com')
             CHGVAR     VAR(&IFSATTACH) VALUE('/REPORT.PDF')

/* PLACE CALL TO EMAIL SEND PROGRAM */
             CALL       PGM(TSTNETDT1R) PARM(&FROMADDR &SUBJECT &MSG +
                          &TO1 &TO2 &TO3 &TO4 &TO5 &CC1 &CC2 &CC3 +
                          &CC4 &CC5 &BCC1 &BCC2 &BCC3 &BCC4 &BCC5 +
                          &IFSATTACH &ERRRTN)

/* DISPLAY ERROR RETURN MESSAGE */
             IF         COND(&ERRRTN = '0') THEN(DO)
             SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Email +
                          was sent')
             ENDDO
             IF         COND(&ERRRTN = '1') THEN(DO)
             SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Errors +
                          occurred while sending email. Check job log')
             ENDDO

Personal tools