I just tweaked one of my standard mail command files to send a multi-line
message body, today only, instead of its normal one-liner. Its pretty long,
but seach for "MSGBODY" to see what I did.
I've also dummied out site-specific info like "from" address & server info.
Search for "???" to find the lines you would need to tweak before you can
run it.
Usage example: xeq mail1rpt.testcmd.shr [log in to unmask]
inv1001.rtf.myacct inv1001.rtf
Parms are email address local-file-name-to-send-as-attachment
optional-attachment-name.
Its main purpose is to send reports as attachments, so it won't work without
having an attacment to send. Sorry.
Once you're past that limitation, its kinda cool. It runs the "mail"
program with some extra error-checking and sets some variables that help the
calling routine keep track.
Around here, it is mostly called by other command files that keep track of
out-trays, logging, automatic-retries if the dsl line goes down, email
groups, etc. Everything the author of "hp2rtf" needs to send out a couple
hundred rtf reports a week and make sure they arrive.
parm _TO = ''
parm _FILE = ""
parm _ATT = ""
option NOlist
# Preserve grand totals but zap other variables from prior calls
# so they won't contaminate error-checking for this call.
IF NOT BOUND (EML_TOT_ERRORS)
SETVAR EML_TOT_ERRORS 0
SETVAR EML_TOT_SENT 0
ELSE
SETVAR ___EML_E_ EML_TOT_ERRORS
SETVAR ___EML_S_ EML_TOT_SENT
DELETEVAR EML_@
SETVAR EML_TOT_ERRORS ___EML_E_
SETVAR EML_TOT_SENT ___EML_S_
DELETEVAR ___EML_@
IF BOUND (MAIL)
DELETEVAR MAIL
ENDIF
IF BOUND (IPCERROR)
DELETEVAR IPCERROR
ENDIF
IF BOUND (FSERROR)
DELETEVAR FSERROR
ENDIF
IF BOUND (SMTPRESULT)
DELETEVAR SMTPRESULT
ENDIF
ENDIF
SETVAR EML_ERRORS 0
SETVAR EML_SENT 0
SETVAR EML_OK FALSE
SETVAR EML_VER '1.0.11'
SETVAR EML_RETRYABLE FALSE
SETVAR EML_ERR_MSG ""
##- validate the 3 parameters
IF '!_TO' = ''
SETVAR EML_ERRORS EML_ERRORS + 1
SETVAR EML_ERR_MSG EML_ERR_MSG + "No address"
ECHO Parm-1 (e-mail address to send to) is required
ELSE
SETVAR EML_TO '!_TO'
IF POS('@',EML_TO) = 0
SETVAR EML_ERRORS EML_ERRORS + 1
SETVAR EML_ERR_MSG EML_ERR_MSG + "Bad address"
ECHO Impossible email-address to send to; no [log in to unmask]
ENDIF
ENDIF
IF FSYNTAX('!_FILE') <> "MPE"
SETVAR EML_ERRORS EML_ERRORS + 1
SETVAR EML_ERR_MSG EML_ERR_MSG + "Bad filename"
ECHO Parm-2 (MPE file name to send) is required
ECHO and must be a valid MPE file name.
ELSEIF WORDCNT('!_FILE','. ') > 3
SETVAR EML_ERRORS EML_ERRORS + 1
SETVAR EML_ERR_MSG EML_ERR_MSG + "Bad file-name"
ECHO Parm-2 (file name) can't be more than FILE.GROUP.ACCT
ELSE
SETVAR EML_FILE '!_FILE'
FILE EMLFILE = !EML_FILE, OLD; CCTL
IF NOT FINFO('*EMLFILE','EXISTS')
ECHO No such permanent file as "!EML_FILE"
SETVAR EML_ERRORS EML_ERRORS + 1
SETVAR EML_ERR_MSG EML_ERR_MSG + "No such file"
ENDIF
ENDIF
IF '!_ATT' = ''
IF WORDCNT('!_FILE','. ') > 2
SETVAR EML_ATT WORD('!_FILE','.',1) + '.' &
+ WORD('!_FILE','.',2)
ELSE
SETVAR EML_ATT '!_FILE'
ENDIF
ELSE
SETVAR EML_ATT '!_ATT'
ENDIF
IF EML_ERRORS > 0
IF HPINTERACTIVE
ECHO Usage: XEQ !hpfile emailaddr@where mpefile.group &
attachname.ext
ECHO 1st parm is the email address to send to. &
Must contain 1 [log in to unmask]
ECHO 2nd parm must be the name of an existing &
permanent file to e-mail as
ECHO an attachment.
ECHO 3rd parm is optional attachment name. Default &
is parm-2's file.group.
ECHO I.E. 'MAIL1RPT eMAILaddress 1RPTname'.
ENDIF
SETVAR EML_TOT_ERRORS EML_TOT_ERRORS + EML_ERRORS
SHOWVAR EML_@
return
ENDIF
SETVAR EML_RETRYABLE TRUE
# Variables that usually won't change except for testing:
# _A Attachment type. Normally '-ap' (?)
IF BOUND ( MAIL_ENCODING__ )
SETVAR _A MAIL_ENCODING__
ELSE
SETVAR _A '-ap'
ENDIF
# Extra info for tests in @dev@ accounts:
IF POS ('DEV','!HPACCOUNT') > 0
SETVAR EML_X_INFO " !HPTIMEF"
ELSE
SETVAR EML_X_INFO ""
ENDIF
## Variables for 'MAIL' program:
# Set the "from" user-name and select 1 from our list of
# possible "from" servers, then select users & turn esmtp
# on or off depending on the server.
SETVAR MAILFROM [log in to unmask]
IF BOUND ( SMTP_HOST__ )
SETVAR MAILSMTPHOST SMTP_HOST__
ELSE
SETVAR MAILSMTPHOST [log in to unmask]
ENDIF
IF DWNS (MAILSMTPHOST) = "smtp.???.???.com"
SETVAR MAILAUTHUSER "[log in to unmask]"
SETVAR MAILAUTHPASS "?????????"
ELSEIF DWNS (MAILSMTPHOST) = 'smtp.???.???'
SETVAR MAILAUTHUSER ""
SETVAR MAILAUTHPASS ""
ELSE
SETVAR MAILAUTHUSER ""
SETVAR MAILAUTHPASS ""
ENDIF
IF NOT BOUND (MAILSUBJECT)
SETVAR MAILSUBJECT 'Report !EML_ATT attached !EML_X_INFO'
ENDIF
SETVAR EML_SUBJECT MAILSUBJECT
# Calling job can over-ride the normal subject, but if it does,
# it needs to set it before every call, cause we zap it at the
# end.
# Set up the dummy msg body text
IF UPS (WORD (EML_ATT, '.', 2) ) = "RTF"
SETVAR _M '-m MSGBODY'
FILE MSGBODY = MSGBODY, OLDTEMP
IF FINFO ("*MSGBODY", 'EXISTS')
PURGE MSGBODY, TEMP
ENDIF
ECHO The attachment is in rich text format and can be read &
by programs like Word, WordPerfect, or even Wordpad. &
>> MSGBODY
IF HPYYYYMMDD = "20090427"
ECHO Recent versions of OpenOffice are NOT &
recommended. >> MSGBODY
ECHO Testing >> MSGBODY
ECHO Still testing >> MSGBODY
ENDIF
ELSE
SETVAR _M '-nomsg'
ENDIF
FILE T = T, OLDTEMP
IF FINFO ('*T','EXISTS')
PURGE T, TEMP
ENDIF
BUILD T; REC=,,V,ASCII; TEMP
IF EML_FILE <> EML_ATT
ECHO Sending !EML_FILE to !EML_TO as !EML_ATT !EML_X_INFO
ELSE
ECHO Sending !EML_FILE to !EML_TO !EML_X_INFO
ENDIF
CONTINUE
MAIL.NETWORK.TELAMON &
"-t !EML_TO !_A !EML_FILE=!EML_ATT !_M -esmtp">*T
PRINT *T
IF FINFO('*T','EOF') = 0
SETVAR EML_RESPONSE ''
SETVAR EML_ACCEPT_ID ' '
SETVAR EML_ACCEPTED FALSE
SETVAR EML_ERRORS EML_ERRORS + 1
ELSE
INPUT EML_RESPONSE < *T
SETVAR EML_RESPONSE EML_RESPONSE - CHR(10)
SETVAR EML_RESPONSE EML_RESPONSE - CHR(13)
SETVAR EML_POS POS ('MESSAGE ACCEPT', UPS (EML_RESPONSE))
IF EML_POS > 2
SETVAR EML_ACCEPTED TRUE
SETVAR EML_ACCEPT_ID LFT (EML_RESPONSE, EML_POS - 2)
ELSEIF UPS (LFT (EML_RESPONSE, 3) ) = "OK " &
AND LEN (EML_RESPONSE) > 3
SETVAR EML_ACCEPTED TRUE
SETVAR EML_ACCEPT_ID RHT (EML_RESPONSE, -4)
SETVAR EML_POS 4
ELSE
SETVAR EML_ACCEPTED FALSE
SETVAR EML_ACCEPT_ID ' '
ENDIF
ENDIF
IF NOT BOUND (MAIL)
SETVAR EML_OK FALSE
SETVAR MAIL -9999
ELSEIF EML_ACCEPTED AND MAIL = 0
SETVAR EML_OK TRUE
ELSEIF EML_ACCEPTED AND MAIL=2 &
AND SMTPRESULT=0 AND FSERROR=0 &
AND ( IPCERROR = 102 OR IPCERROR=0 )
SETVAR EML_OK TRUE
ENDIF
IF EML_OK
SETVAR EML_SENT EML_SENT + 1
SETVAR EML_STATUS 'Sent'
ELSE
SETVAR EML_ERRORS EML_ERRORS + 1
SETVAR EML_STATUS 'FAIL'
ENDIF
SETVAR EML_TOT_ERRORS EML_TOT_ERRORS + EML_ERRORS
SETVAR EML_TOT_SENT EML_TOT_SENT + EML_SENT
IF BOUND (SMTPRESULT)
SETVAR EML_SMTP SMTPRESULT
IF SMTPRESULT <> 0
SETVAR EML_ERR_MSG EML_ERR_MSG + "Smtpresult=!SMTPRESULT"
ENDIF
ELSE
SETVAR EML_SMTP "undef"
ENDIF
IF BOUND (IPCERROR)
SETVAR EML_IPC IPCERROR
IF IPCERROR <> 0
SETVAR EML_ERR_MSG EML_ERR_MSG + "Ipcerror=!IPCERROR"
ENDIF
ELSE
SETVAR EML_IPC "undef"
ENDIF
IF BOUND (FSERROR)
SETVAR EML_FS FSERROR
IF FSERROR <> 0
SETVAR EML_ERR_MSG EML_ERR_MSG + "Fserror=!FSERROR"
ENDIF
ELSE
SETVAR EML_FS "undef"
ENDIF
IF EML_ERRORS = 0
IF MAIL = 0 AND CIERROR = 0
ECHO Done OK
ELSE
ECHO Done OK (Mail=!MAIL CiError=!CIERROR)
ENDIF
ELSE
ECHO Mail=!MAIL; &
SMTPRESULT=!EML_SMTP; &
FSERROR=!EML_FS; &
IPCERROR=!EML_IPC; &
ACCEPT=!EML_ACCEPTED
IF POS ('DEV','!HPACCOUNT') > 0
SHOWVAR EML_@, JCW, @ERROR, MAIL@
ENDIF
ENDIF
DELETEVAR MAILSUBJECT
return
# Cmd file: MAIL1RPT
# Dave Powell, MMfab, Inc. 1st written 02/13/2004
#
# Cmd-file to email one REPORT to one email address. File
# goes as an attachment.
# It is happiest if the report is in a group that can be
# used as the attachment's extension, like ".RTF".
#
# To send to 2 or more addresses, put quotes around the entire
# parm, and have it be all the addresses you want to send to
# separated by ' -t ', or ' -c '.
# Example:
# MAIL1RPT [log in to unmask] -c [log in to unmask] filename
#
# There are extra debugging displays if run in an account
# with 'DEV' in the account name.
#
# -------------------------------------------------
# Maintenance:
#
----- Original Message -----
From: "Todd Niedringhaus" <[log in to unmask]>
To: <[log in to unmask]>
Sent: Monday, April 27, 2009 08:27
Subject: [HP3000-L] Generating Emails using Telamon's Mail client
Hello,
Does anyone have a sample job stream that produces an email with multiple
lines in the email 'body' using Telamon's mail program that they would be
willing to share?
Thanks.
* To join/leave the list, search archives, change list settings, *
* etc., please visit http://raven.utc.edu/archives/hp3000-l.html *
* To join/leave the list, search archives, change list settings, *
* etc., please visit http://raven.utc.edu/archives/hp3000-l.html *
|