HP3000-L Archives

April 2009, Week 4

HP3000-L@RAVEN.UTC.EDU

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
"Dave Powell, MMfab" <[log in to unmask]>
Reply To:
Dave Powell, MMfab
Date:
Mon, 27 Apr 2009 12:59:13 -0700
Content-Type:
text/plain
Parts/Attachments:
text/plain (341 lines)
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 *

ATOM RSS1 RSS2