Vous êtes sur la page 1sur 23

Sending Email on MVS via SMTP

-OrYouve Got Mail! (from the mainframe) -orSleepless in SMTP


Jon Gibbens jon@provista.com

A Familiar Phone Conversation?


Hello, this is Jon..

Yes, this is Steve Bigwig here, did my extracts run last night??
Let me check. <click click>

Yes, they are done..the job ran last night at 3am


Ok, and could you tell me how many records were on it?

<click click> Yeah, 500.

Thanks
Next week..same exact phone call!!!

Introduction
Need to notify users when certain

conditions have been met, such as...


Reports Printed/Ready Files transferred Jobs completed/failed

Provide some kind of automated reporting ie..send data to someone on a regular basis

How about using Email?


Email can help bridge the communication

gap between you (the developer) and end users. The rest of the world uses email to notify people about things, why not you and your MVS-based FOCUS programs?

Presentation Agenda
How does it work?

Note Control File


Sample JCL (Inline & Procedure)
Sample FOCEXEC code Sending a report via email Advanced Usage (URLs, HTML) WWW resources Q&A

How does it work?


In a nutshell:

1 - Dynamically create your NOTE CONTROL FILE or use one that you have already created. 2 - NOTE CONTROL file contains the secret handshake as well as your note body text. 3 - Send NOTE CONTROL file off to SMTP via IEBGENER.
SMTP allows for sending of email to any

connected Intranet or Internet host.

Note Control File - REQUIRED ELEMENTS (or....Whats the secret handshake?)


1. HELO HOST - HOST is name of the MVSHOST (defined in SYS1.PARMLIB(IEFSSNxx) 2. MAIL FROM:<email address> -sender of note 3. RCPT TO:<email address> - 1 line per email recipient (as many recipients as you want) 4. DATA - seperator between RCPT TO & SUBJECT 5. SUBJECT - subject line of note 6. Note Body

Sample Note Control file


HELO HOST MAIL FROM:<JON@PROVISTA.COM> RCPT TO:<JONATHAN.GIBBENS@SCHWAB.COM> DATA SUBJECT: TEST OF MAILING OUT THIS IS A TEST OF EMAIL :)
JON GIBBENS

Note Control file generated with FOCUS/Dialogue Manager (using -WRITE statements)

JCL section of a procedure


//********************************************************************** //* PS020: EXECUTE IEBGENER PROGRAM TO SEND EMAIL NOTIFICATION VIA SMTP //********************************************************************** //PS020 EXEC PGM=IEBGENER //********************************************************************** //SYSIN DD DUMMY //SYSUT1 DD DSN=&WKPDS..NOTECNTL.TEST,DISP=SHR //SYSUT2 DD SYSOUT=(B,SMTP) //SYSOUT DD SYSOUT=X //SYSPRINT DD SYSOUT=X

IEBGENER - copies sequential dataset from any device to any device. Input step in SYSUT1 - location of Note Control File Output step in SYSUT2 - passes control to SMTP program

JCL with note control file included inline


//MA#JOGA1 JOB (TEST,MF#1),'JON MAIL TEST',CLASS=9,MSGCLASS=T, // NOTIFY=MF#JOG,USER=MF#JOG //IEBGENER EXEC PGM=IEBGENER //SYSIN DD DUMMY //SYSUT1 DD * HELO HOST MAIL FROM:<JON@PROVISTA.COM> RCPT TO:<JONATHAN.GIBBENS@SCHWAB.COM> DATA SUBJECT: TEST OF MAILING OUT THIS IS A TEST OF EMAIL :) JON GIBBENS /* //SYSUT2 DD SYSOUT=(B,SMTP) //SYSOUT DD SYSOUT=X //SYSPRINT DD SYSOUT=X

Sample Note generated by JCL ( as viewed in Exchange)

Sample Scenario
Want to let Steve Bigwig know when his job

ran, and how many records it pulled.


Sample Focexec to follow writes out the #

system time & date, and the # of records in a flat file. Also creates our NOTE CONTROL FILE.

FOCUS code to create NOTE Control File


Focexec is EMLSAMP1

Includes a utility I use for creating most of my email related && variables
This code would go AFTER data extract

portion of the program. Would be part of a JCL job/procedure

-* TABLE FILE <whatever> SUM CNT.ACCOUNTS BY CODE -* -*EMLSAMP1: JONATHAN GIBBENS -*FOCEXEC ABOVE DOES EXTRACT FOR STEVE BIGWIG -* END -* ===================================================== -* SET THE SYSTEM TIME VARIABLE -* ===================================================== -SET &STIME = ' '; -SET &STIME = HHMMSS(&STIME); -* -* ===================================================== -* SET UP 3 BODY LINES FOR EMAIL MESSAGE -* DATE/TIME/RECORDS/LINES -* ===================================================== -SET &NEATDATE = EDIT(&YYMD,'9999/99/99'); -SET &BODY1 = ' YOUR EXTRACT RAN ON ' | &NEATDATE | ' AT ' | &STIME; -SET &BODY2 = ' THE NUMBER OF LINES IN YOUR EXTRACT WAS ' | &LINES; -SET &BODY3 = ' THE NUMBER OF RECORDS IN YOUR EXTRACT WAS '| &RECORDS; -* -* ===================================================== -* SET UP THE RECIPIENTS OF THE NOTE, AND THE SUBJECT -* ===================================================== -SET &RCPT1='JONATHAN.GIBBENS@SCHWAB.COM'; -SET &RCPT2='STEVEB@COMPANY.COM'; -SET &SUBJECT = 'FILE EXTRACTS FOR ' | &NEATDATE; -* -*

EMLSAMP1 Focexec
-*********************************************************** -* NOTE CONTROL FILE UTILITY -* JON GIBBENS - PROVISTA SOFTWARE INTL. - JON@PROVISTA.COM -* -* SET UP && VARIABLES FOR CREATION OF NOTE CONTROL FILE -* NOTE: ALL OF THESE -SETS COULD BE INSIDE OF AN INCLUDE -* FILE FOR CONVENIENCE AND CODE PORTABILITY -** -** INPUTS: -** &RCPT1-5 = UP TO FIVE VALID EMAIL ADDRESSES -** &SUBJECT = THE SUBJECT OF THE NOTE -** -** OUTPUTS: ESSENTIAL VARIABLES FOR AN EMAIL MESSAGE -** -** &HELOLINE = 'HELO HOST' - FIRST LINE OF EMAIL MESSAGE -** WHERE HOST IS THE MAIL SUBSYSTEM -** &RCPTLNE1='RCPT TO:<RPCT1>' FIRST RECIPIENT -** &RCPTLNE2='RCPT TO:<RPCT2>' 2ND RECIPIENT -** &RCPTLNE3='RCPT TO:<RPCT3>' 3RD "" -** &RCPTLNE4='RCPT TO:<RPCT4>' 4TH "" -** &RCPTLNE5='RCPT TO:<RPCT5>' 5TH "" -** &SUBLINE = 'SUBJECT: &SUBJECT' -** &TOEND = '>' - THE END OF THE 'TO' LINE -** &DATALINE = 'DATA' - PUT AFTER 'TO' LINE(s) -** &SUBBEG = 'SUBJECT:' - BEGINNING OF SUBJECT LINE -** &SIGLINE1='THANKS! HAVE A NICE DAY!' -** &BLANKLINE = ' ' - SPACES/BLANKS -************************************************************** -**DEFAULT THE ESSENTIAL ELEMENTS*************************************************************** -DEFAULTS &HELOLINE = 'HELO HOST' -DEFAULTS &TOBEG = 'RCPT TO:<' -DEFAULTS &TOEND = '>' -DEFAULTS &DATALINE = 'DATA' -DEFAULTS &SUBBEG = 'SUBJECT: ' -DEFAULTS &RCPT1=' ' -DEFAULTS &RCPT2=' ' -DEFAULTS &RCPT3=' ' -DEFAULTS &RCPT4=' ' -DEFAULTS &RCPT5=' ' -DEFAULTS &SUBJECT = ' ' -DEFAULTS &BLANKLINE = ' ' -RUN

EMLSAMP1 Focexec
-* -* ------------------------------------------------------------* SET UP THE RCPT TO: LINES - UP TO 5 PEOPLE CAN BE SENT THE EMAIL -* READ IN THE &RCPT1,&RCPT2,&RCPT3,&RCPT4,&RCPT5 VARIABLES -* OUTPUT IN THE FORMAT: RCPT TO:<EMAIL ADDRESS> -* ------------------------------------------------------------* -SET &RCPTLNE1 = &TOBEG || &RCPT1 || &TOEND; -SET &RCPTLNE2 = &TOBEG || &RCPT2 || &TOEND; -SET &RCPTLNE3 = &TOBEG || &RCPT3 || &TOEND; -SET &RCPTLNE4 = &TOBEG || &RCPT4 || &TOEND; -SET &RCPTLNE5 = &TOBEG || &RCPT5 || &TOEND; -* -* ------------------------------------------------------------* SET UP THE SUBJECT LINE - READ IN &SUBJECT; -* ------------------------------------------------------------* -SET &SUBLINE = 'SUBJECT: ' | &SUBJECT; ******************************************************************** -**INSTALLATION SPECIFIC VARIABLES -** &FROMLINE - EMAIL ADDRESS FOR THE SENDER (CAN BE ANY EMAIL -** ADDRESS) -** &SIGLINE1 - LINE TO END THE EMAIL ******************************************************************** -* -DEFAULTS &FROMLINE = 'MAIL FROM:<THEBIGMAINFRAME@COMPANY.COM>' -DEFAULTS &SIGLINE1 = 'THANKS! HAVE A NICE DAY!!' -DEFAULTS &SIGLINE2 = 'QUESTIONS/PROBLEMS? EMAIL TECHSUPPORT@COMPANY.COM' ******************************************************************** *** -* -* ---------------------------------------------------------------* WRITE OUT THE NOTE CONTROL FILE: NOTECNTL -* NOTE CONTROL FILE IS A FLAT FILE ALLOCATED AS MOD -* FOR SIMPLE NOTES, IT CAN BE FIXED FORMAT, 80 CHARACTERS, 27920 BLKS

- ---------------------------------------------------------------* -* ===================================================== -* WRITE OUT THE HELOLINE & THE FROM LINE -* ===================================================== -* -WRITE NOTECNTL &HELOLINE -WRITE NOTECNTL &FROMLINE -* -* ===================================================== -* WRITE OUT THE RECIPIENT(S) -* ===================================================== -* -WRITE NOTECNTL &RCPTLNE1 -WRITE NOTECNTL &RCPTLNE2 -* -* ===================================================== -* WRITE OUT THE DATA SEPERATOR & SUBJECT LINE -* ===================================================== -* -WRITE NOTECNTL &DATALINE -WRITE NOTECNTL &SUBLINE -* -* ===================================================== -* WRITE OUT THE BODY OF THE NOTE -* ===================================================== -* -WRITE NOTECNTL &BLANKLINE -WRITE NOTECNTL &BODY1 -WRITE NOTECNTL &BODY2 -WRITE NOTECNTL &BODY3 -WRITE NOTECNTL &BLANKLINE -WRITE NOTECNTL &SIGLINE1 -WRITE NOTECNTL &SIGLINE2 -* -* -* ========================================================= -* END OF JOB EMLSAMP1 -* =========================================================

Resulting file from EMLSAMP


HELO HOST MAIL FROM:<THEBIGMAINFRAME@COMPANY.COM> RCPT TO:<JONATHAN.GIBBENS@SCHWAB.COM> RCPT TO:<STEVEB@COMPANY.COM> DATA SUBJECT: FILE EXTRACTS FOR 1999/09/10 YOUR EXTRACT RAN ON 1999/09/10 AT 16.53.44 THE NUMBER OF LINES IN YOUR EXTRACT WAS THE NUMBER OF RECORDS IN YOUR EXTRACT WAS

27 1000

THANKS! HAVE A NICE DAY!! QUESTIONS/PROBLEMS? EMAIL TECHSUPPORT@COMPANY.COM

Sending a report via email


To send a small report (less than the

maxiumum line length of your email client)


1. Turn off page-breaks (SET PAGE=NOPAGE ) 2. Put NOTE CONTROL FILE elements into your HEADER (ie..HELO,MAIL FROM,RCPT TO,DATA) 3. Save file in WP format and then send off to IEBGENER using JCL in examples.

Advanced Usage

URLs - Exchange/Outlook or Netscape mail (other mail clients as well) will read any URLs you include in your note and will activate them
So, if you are doing Intranet type reporting, you can point users to where the reports are.

Can do fancier HTML formatting if include MIME tags and HTML code (example to follow)
Only really works if email client fully supports HTML, or at least, supports the features that YOU need.

Note Control File with a URL along with resulting note.


HELO HOST MAIL FROM:<JON@PROVISTA.COM> RCPT TO:<JONATHAN.GIBBENS@SCHWAB.COM> DATA SUBJECT: TEST OF USING URL IN NOTE

A good site to visit for FUSE-related information is: http://www.csuhayward.edu/FOCUS/ncalfuse.htm

Note Control File with HTML along with resulting note.


HELO HOST MAIL FROM:<THEBIGMAINFRAME@SCHWAB.COM> RCPT TO:<JONATHAN.GIBBENS@SCHWAB.COM> DATA SUBJECT: A HTML TEST NOTE MIME-Version: 1.0 Content-type: text/html; charset=us-ascii <HTML> <BODY> <H1>Heres the big header of the note</H1> <P> Hey, heres an HTML note that will have you seeing <font face=Arial size=+5 color=red>RED</font> </BODY> </HTML>

WWW Resources
Daves MVS Mail Page http://users.ticnet.com/davea/mvs/mvsmail

Decoding Internet Attachments http://pages.prodigy.net/michael_santovec/decode.htm - To find out more about MIME tags, and different compatibility issues with different email clients

Questions?

Download this presentation


Northern California FUSE Homepage:
http://www.csuhayward.edu/FOCUS/mvsmail.ppt

Vous aimerez peut-être aussi