Unconfigured Ad Widget

Collapse

Announcement

Collapse
No announcement yet.

E-mail Message

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • E-mail Message

    We have an as/400 model 510 on V4R2. We have SMTP setup so that we can use the SNDDST command with the *LMSG option and send an E-mail style message to a Lotus Notes user on another server in our network. What we want to be able to do is the following: Send the E-mail style message with a link to an AS/400 application(internally written, COBOL pgm, with parameters) and have that application run for the user. I hope I have explained myself clearly enough. If anyone has any ideas on how to do this or even if it is possible, please respond. Regards Bob Karutis

  • #2
    E-mail Message

    On Monday, December 14, 1998, 07:41 AM, Bob Karutis wrote: We have an as/400 model 510 on V4R2. We have SMTP setup so that we can use the SNDDST command with the *LMSG option and send an E-mail style message to a Lotus Notes user on another server in our network. What we want to be able to do is the following: Send the E-mail style message with a link to an AS/400 application(internally written, COBOL pgm, with parameters) and have that application run for the user. I hope I have explained myself clearly enough. If anyone has any ideas on how to do this or even if it is possible, please respond. Regards Bob Karutis Bob, I had a request to have programs send email messages to users when certain conditions occur. I looked in the API manuals but could not find an API. I had to get it done so I made a CL module that would use the SNDDST command. The LMSG parameter can be up to 5000 bytes long. In the COBOL programs we define a field of 5000 bytes to contain the message. We pass the field as a parameter to the CL module. When I first did this on V3R7, I sent 5000 byte messages that contained mostly spaces. So, I created a CL that would break the message up into 100 byte units. The way I did it was to create 50 fields and 50 snddst commands. This is an ugly way to do it, but it works. Our COBOL programs call a COBOL module, which then calls the CL. The CL and the COBOL module are listed below. PGM PARM(&EMAILMSG &EMAILLEN + &SUBJECT + &USERID &RTNCODE) DCL VAR(&EMAILMSG) TYPE(*CHAR) LEN(5000) DCL VAR(&EMAILLEN) TYPE(*DEC) LEN(9 0) DCL VAR(&SUBJECT) TYPE(*CHAR) LEN(60) DCL VAR(&SUBJECTLEN) TYPE(*DEC) LEN(9 0) DCL VAR(&USERID) TYPE(*CHAR) LEN(8) DCL VAR(&RTNCODE) TYPE(*DEC) LEN(9 0) DCL VAR(&SYSNAME) TYPE(*CHAR) LEN(8) DCL VAR(&DSTD) TYPE(*CHAR) LEN(44) DCL VAR(&WKMSG100) TYPE(*CHAR) LEN(100) DCL VAR(&WKMSG200) TYPE(*CHAR) LEN(200) DCL VAR(&WKMSG300) TYPE(*CHAR) LEN(300) DCL VAR(&WKMSG400) TYPE(*CHAR) LEN(400) DCL VAR(&WKMSG500) TYPE(*CHAR) LEN(500) DCL VAR(&WKMSG600) TYPE(*CHAR) LEN(600) DCL VAR(&WKMSG700) TYPE(*CHAR) LEN(700) DCL VAR(&WKMSG800) TYPE(*CHAR) LEN(800) DCL VAR(&WKMSG900) TYPE(*CHAR) LEN(900) DCL VAR(&WKMSG1000) TYPE(*CHAR) LEN(1000) DCL VAR(&WKMSG1100) TYPE(*CHAR) LEN(1100) DCL VAR(&WKMSG1200) TYPE(*CHAR) LEN(1200) DCL VAR(&WKMSG1300) TYPE(*CHAR) LEN(1300) DCL VAR(&WKMSG1400) TYPE(*CHAR) LEN(1400) DCL VAR(&WKMSG1500) TYPE(*CHAR) LEN(1500) DCL VAR(&WKMSG1600) TYPE(*CHAR) LEN(1600) DCL VAR(&WKMSG1700) TYPE(*CHAR) LEN(1700) DCL VAR(&WKMSG1800) TYPE(*CHAR) LEN(1800) DCL VAR(&WKMSG1900) TYPE(*CHAR) LEN(1900) DCL VAR(&WKMSG2000) TYPE(*CHAR) LEN(2000) DCL VAR(&WKMSG2100) TYPE(*CHAR) LEN(2100) DCL VAR(&WKMSG2200) TYPE(*CHAR) LEN(2200) DCL VAR(&WKMSG2300) TYPE(*CHAR) LEN(2300) DCL VAR(&WKMSG2400) TYPE(*CHAR) LEN(2400) DCL VAR(&WKMSG2500) TYPE(*CHAR) LEN(2500) DCL VAR(&WKMSG2600) TYPE(*CHAR) LEN(2600) DCL VAR(&WKMSG2700) TYPE(*CHAR) LEN(2700) DCL VAR(&WKMSG2800) TYPE(*CHAR) LEN(2800) DCL VAR(&WKMSG2900) TYPE(*CHAR) LEN(2900) DCL VAR(&WKMSG3000) TYPE(*CHAR) LEN(3000) DCL VAR(&WKMSG3100) TYPE(*CHAR) LEN(3100) DCL VAR(&WKMSG3200) TYPE(*CHAR) LEN(3200) DCL VAR(&WKMSG3300) TYPE(*CHAR) LEN(3300) DCL VAR(&WKMSG3400) TYPE(*CHAR) LEN(3400) DCL VAR(&WKMSG3500) TYPE(*CHAR) LEN(3500) DCL VAR(&WKMSG3600) TYPE(*CHAR) LEN(3600) DCL VAR(&WKMSG3700) TYPE(*CHAR) LEN(3700) DCL VAR(&WKMSG3800) TYPE(*CHAR) LEN(3800) DCL VAR(&WKMSG3900) TYPE(*CHAR) LEN(3900) DCL VAR(&WKMSG4000) TYPE(*CHAR) LEN(4000) DCL VAR(&WKMSG4100) TYPE(*CHAR) LEN(4100) DCL VAR(&WKMSG4200) TYPE(*CHAR) LEN(4200) DCL VAR(&WKMSG4300) TYPE(*CHAR) LEN(4300) DCL VAR(&WKMSG4400) TYPE(*CHAR) LEN(4400) DCL VAR(&WKMSG4500) TYPE(*CHAR) LEN(4500) DCL VAR(&WKMSG4600) TYPE(*CHAR) LEN(4600) DCL VAR(&WKMSG4700) TYPE(*CHAR) LEN(4700) DCL VAR(&WKMSG4800) TYPE(*CHAR) LEN(4800) DCL VAR(&WKMSG4900) TYPE(*CHAR) LEN(4900) DCL VAR(&WKMSG5000) TYPE(*CHAR) LEN(5000) MONMSG MSGID(CPF901A) EXEC(GOTO NOUSER) CHGVAR VAR(&RTNCODE) VALUE(0) CHGVAR VAR(&DSTD) VALUE(&SUBJECT) RTVNETA SYSNAME(&SYSNAME) IF COND(&EMAILLEN *LT 101) THEN(GOTO SEND100) IF COND(&EMAILLEN *LT 201) THEN(GOTO SEND200) IF COND(&EMAILLEN *LT 301) THEN(GOTO SEND300) IF COND(&EMAILLEN *LT 401) THEN(GOTO SEND400) IF COND(&EMAILLEN *LT 501) THEN(GOTO SEND500) IF COND(&EMAILLEN *LT 601) THEN(GOTO SEND600) IF COND(&EMAILLEN *LT 701) THEN(GOTO SEND700) IF COND(&EMAILLEN *LT 801) THEN(GOTO SEND800) IF COND(&EMAILLEN *LT 901) THEN(GOTO SEND900) IF COND(&EMAILLEN *LT 1001) THEN(GOTO SEND1000) IF COND(&EMAILLEN *LT 1101) THEN(GOTO SEND1100) IF COND(&EMAILLEN *LT 1201) THEN(GOTO SEND1200) IF COND(&EMAILLEN *LT 1301) THEN(GOTO SEND1300) IF COND(&EMAILLEN *LT 1401) THEN(GOTO SEND1400) IF COND(&EMAILLEN *LT 1501) THEN(GOTO SEND1500) IF COND(&EMAILLEN *LT 1601) THEN(GOTO SEND1600) IF COND(&EMAILLEN *LT 1701) THEN(GOTO SEND1700) IF COND(&EMAILLEN *LT 1801) THEN(GOTO SEND1800) IF COND(&EMAILLEN *LT 1901) THEN(GOTO SEND1900) IF COND(&EMAILLEN *LT 2001) THEN(GOTO SEND2000) IF COND(&EMAILLEN *LT 2101) THEN(GOTO SEND2100) IF COND(&EMAILLEN *LT 2201) THEN(GOTO SEND2200) IF COND(&EMAILLEN *LT 2301) THEN(GOTO SEND2300) IF COND(&EMAILLEN *LT 2401) THEN(GOTO SEND2400) IF COND(&EMAILLEN *LT 2501) THEN(GOTO SEND2500) IF COND(&EMAILLEN *LT 2601) THEN(GOTO SEND2600) IF COND(&EMAILLEN *LT 2701) THEN(GOTO SEND2700) IF COND(&EMAILLEN *LT 2801) THEN(GOTO SEND2800) IF COND(&EMAILLEN *LT 2901) THEN(GOTO SEND2900) IF COND(&EMAILLEN *LT 3001) THEN(GOTO SEND3000) IF COND(&EMAILLEN *LT 3101) THEN(GOTO SEND3100) IF COND(&EMAILLEN *LT 3201) THEN(GOTO SEND3200) IF COND(&EMAILLEN *LT 3301) THEN(GOTO SEND3300) IF COND(&EMAILLEN *LT 3401) THEN(GOTO SEND3400) IF COND(&EMAILLEN *LT 3501) THEN(GOTO SEND3500) IF COND(&EMAILLEN *LT 3601) THEN(GOTO SEND3600) IF COND(&EMAILLEN *LT 3701) THEN(GOTO SEND3700) IF COND(&EMAILLEN *LT 3801) THEN(GOTO SEND3800) IF COND(&EMAILLEN *LT 3901) THEN(GOTO SEND3900) IF COND(&EMAILLEN *LT 4001) THEN(GOTO SEND4000) IF COND(&EMAILLEN *LT 4101) THEN(GOTO SEND4100) IF COND(&EMAILLEN *LT 4101) THEN(GOTO SEND4100) IF COND(&EMAILLEN *LT 4201) THEN(GOTO SEND4200) IF COND(&EMAILLEN *LT 4301) THEN(GOTO SEND4300) IF COND(&EMAILLEN *LT 4401) THEN(GOTO SEND4400) IF COND(&EMAILLEN *LT 4501) THEN(GOTO SEND4500) IF COND(&EMAILLEN *LT 4601) THEN(GOTO SEND4600) IF COND(&EMAILLEN *LT 4701) THEN(GOTO SEND4700) IF COND(&EMAILLEN *LT 4801) THEN(GOTO SEND4800) IF COND(&EMAILLEN *LT 4901) THEN(GOTO SEND4900) GOTO SEND5000 SEND100: CHGVAR VAR(%SST(&WKMSG100 1 100)) + VALUE(' ') CHGVAR VAR(%SST(&WKMSG100 1 1)) + VALUE('S') CHGVAR VAR(%SST(&WKMSG100 100 1)) + VALUE('E') CHGVAR VAR(%SST(&WKMSG100 1 &EMAILLEN)) + VALUE(&EMAILMSG) SNDDST TYPE(*LMSG) TOUSRID((&USERID &SYSNAME)) + LONGMSG(&WKMSG100) DSTD(&DSTD) + SUBJECT(&SUBJECT) GOTO EXIT ... repeat SEND### FOR EACH LENGTH ... NOUSER: CHGVAR VAR(&RTNCODE) VALUE(1) GOTO EXIT EXIT: RETURN ENDPGM ***************************** PROCESS NOMONOPRC APOST FLAG(20) IDENTIFICATION DIVISION. *ACTGRP *CALLER PROGRAM-ID. 'SendEMailUserId'. AUTHOR. JIM HICKS. ************************ * module to send email by user id. ************************** ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. IBM-AS400. OBJECT-COMPUTER. IBM-AS400. INPUT-OUTPUT SECTION. DATA DIVISION. FILE SECTION. FILE-CONTROL. EJECT WORKING-STORAGE SECTION. COPY EMSGID. 01 WS-PPB. COPY PPBWS REPLACING '@@' BY 1. 01 CL-LENGTH-OF-EMAIL-MSG PIC 9(9) VALUE 0 USAGE IS PACKED-DECIMAL. 01 CL-RET-CODE PIC 9(9) VALUE 0 USAGE IS PACKED-DECIMAL. LINKAGE SECTION. 01 LK-EMAIL-MSG. 05 LK-EMAIL-MSG-TABLE PIC X(1) OCCURS 5000 TIMES. 01 LK-EMAIL-SUBJECT PIC X(60). 01 LK-EMAIL-USER PIC X(8). PROCEDURE DIVISION USING LK-EMAIL-MSG LK-EMAIL-SUBJECT LK-EMAIL-USER RETURNING WS-EMSGID. MAIN-PROGRAM SECTION. MAINLINE. IF LK-EMAIL-SUBJECT IS EQUAL TO SPACES MOVE 003070002 TO WS-EMSGID GOBACK. * SUBJECT IS REQUIRED RETURN ERROR CODE. MOVE LENGTH OF LK-EMAIL-MSG TO CL-LENGTH-OF-EMAIL-MSG. PERFORM COMPUTE-LENGTH UNTIL CL-LENGTH-OF-EMAIL-MSG IS EQUAL TO 1 OR LK-EMAIL-MSG-TABLE(CL-LENGTH-OF-EMAIL-MSG) IS NOT EQUAL TO ' '. CALL LINKAGE TYPE PROCEDURE 'EMAILSUSER' USING LK-EMAIL-MSG CL-LENGTH-OF-EMAIL-MSG LK-EMAIL-SUBJECT LK-EMAIL-USER CL-RET-CODE. IF CL-RET-CODE IS NOT EQUAL TO 0 ADD 3070000 TO CL-RET-CODE. MOVE CL-RET-CODE TO WS-EMSGID. MOVE CL-RET-CODE TO WS-EMSGID. IF WS-EMSGID IS EQUAL TO 3070001 MOVE 1 TO NUMBER-OF-PARAMETERS IN WS-PPB MOVE LENGTH OF LK-EMAIL-USER TO SIZE-OF-PARM-RECORD IN WS-PPB (1) CALL LINKAGE TYPE PROCEDURE 'SetEMsgIdValues' USING WS-EMSGID WS-PPB LK-EMAIL-USER. COMPUTE-LENGTH. SUBTRACT 1 FROM CL-LENGTH-OF-EMAIL-MSG. JHicks@SUZ.com

    Comment


    • #3
      E-mail Message

      Bob, If I understand your request correctly, what you want is to send an e-mail to a Notes user and allow the e-mail recipient to then cause an application (COBOL in your case) to execute on the AS/400 due to an action by the recipient (perhaps clicking on a URL). If this is the case then I believe (without having tried it I will point out) that you should be able to do this by constructing a properly formatted note, sending the note via QtmmSendMail (see the TCP/IP Reference manual), and within the note back referencing the AS/400 COBOL application using the HTTP Server CGI support of the AS/400 (see the HTTP Server WebMaster Guide). There are undoubtedly other ways of doing this type of thing, but this is the first that jumps to mind for me. SNDDST with *LMSG I suspect (again without knowing for sure) will not be sufficient as I would anticipate it being treated as pure character text and, as such, not having the proper formatting for URL identification and translation.

      Comment


      • #4
        E-mail Message

        On Saturday, December 12, 1998, 07:53 AM, Thomas Paluge wrote: We have an intermittent problem with our firewall. Several times a day email just stops going through the firewall, some days we have no problem at all. We are using MS Exchange 4 service pack 3 and IBM says that the problem is caused by Exchange creating 'host not found' email messages and not knowing what to do with them. IBM says that this causes the messages to bounce back and forth between the firewall and Exchange. IBM said it is not a problem with the firewall and suggested that we applied service pack 4. We did this and still have the same problem. The only way we have found to get around this is to stop the firewall, delete these 'bouncing messages' and restart the firewall. We are doing this several times a day. Does anyone know the permanent fix to this. We also use Exchange on an NT server as our mail server. This NT server functions as our public DNS server and our mail server. It has two Ethernet ports on it. One attached to the DMZ and one to the internal network. As a result, it bypasses the firewall. You can do this with NT because it has TCP/IP security functions that let you restrict TCP/IP ports just like a firewall. If you do this, make sure the NT server's TCP/IP security is on. Only allow ports for DNS and email on the Ethernet attached to the DMZ. All other ports are off so PC access and administration can not be done from the outside. JHicks@SUZ.com

        Comment

        Working...
        X