home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Meeting Pearls 3
/
Meeting_Pearls_III.iso
/
Pearls
/
comm
/
Fido
/
MailManager
/
Contrib
/
Alessandro_Zummo
/
MM_CC.rexx
< prev
next >
Wrap
OS/2 REXX Batch file
|
1995-04-12
|
6KB
|
251 lines
/*******************************************************************/
/* $VER: MM_CC.rexx 1.0 (28.3.95) */
/* */
/* Inspired by BryCC.spot by Brian Jacobsen */
/* */
/* This script will send multiple copies of a letter to two or */
/* more users. */
/* */
/* Will either prompt you for receivers or read them from a file */
/* */
/* Both takes the format: Username @ Address@domain */
/* */
/* Author: Alessandro Zummo FidoNet: 2:335/525.10 */
/*******************************************************************/
DROP MM.
PARSE UPPER ARG MM.AreaTag
MM.PrgName = 'MM_CC v1.0 '
MM.Copyright = '(C) 1995 by Alessandro Zummo'
MM.CCDir = 'MAIL:' /* Where to look for *.CC */
MM.TempFile1 = 'T:CC1.trans'
MM.TempFile2 = 'T:CC2.trans'
MM.EditorStack = 10000
ADDRESS 'MAILMANAGER'
SIGNAL ON SYNTAX
OPTIONS RESULTS
cr = '0a'X /* Carriage return */
receivers. = 0
addresses. = 0
ReceiverCounter = 0
MM_GetCfgPaths MM.Path
MM.Editor = Trasforma(MM.Path.Editor)
GetAreaInfo MM.AreaTag Info
IF UPPER(Info.Type) = 'MAIL' THEN DO
Requester('Warning','Only works in a NetMail area','Ok')
exit
END
title = 'Please choose...'
text = 'Do you want enter receivers manually or'cr' read them from a file?'
gadgets = '_Manual|_Cancel|*_File'
a = Requester(title,text,gadgets)
IF a = 2 THEN exit
IF a = 0 THEN /* File */
DO
MM_FileReq 'MM.CCDir'
IF rc = 0 THEN
CALL ReadCC MM.CCDir
ELSE
SIGNAL exit
END
ELSE /* Manual */
DO
title = 'Please enter receivers (name @ address@domain)'
MM_StringReq '"'title'"' var
IF rc ~= 0 THEN SIGNAL exit
DO WHILE var ~= ""
pos = index(var,"|")
IF pos > 1 THEN
DO
ReceiverCounter = ReceiverCounter + 1;
receivers.ReceiverCounter = STRIP(LEFT(var,pos-1))
addresses.ReceiverCounter = STRIP(SUBSTR(var,pos+1))
END
var = ''
MM_StringReq '"'title'"' var
IF rc ~= 0 THEN SIGNAL exit
END
receivers.0 = ReceiverCounter
END
IF receivers.0 = 0 THEN SIGNAL exit /* No users selected */
IF receivers.0 = 1 THEN /* Only one selected */
DO
title = '??????'
text = 'Oh boy, you only selected one receiver.'cr'Please use write instead...'
gadgets 'OK'
Requester(title,text,gadgets)
SIGNAL exit
END
CALL PRAGMA('S',MM.editorStack)
ADDRESS COMMAND MM.Editor /* Enter message */
title = 'Please enter subject...'
MM_StringReq '"'title'"' subject
IF a ~= 0 THEN SIGNAL exit
IF OPEN(temphandle1,MM.TempFile1,'Read') ~= 1 THEN
DO
title = 'Error!'
text = 'Could not open' MM.tempfile1 'for reading..'
gadgets = 'Ok'
Requester(title,text,gadgets)
SIGNAL exit
END
BodyText = READCH(temphandle1,60000)
CALL CLOSE temphandle1
DO i = 1 TO Receivers.0
IF OPEN(temphandle2,MM.tempfile2,'Write') ~= 1 THEN
DO
title = 'Error!'
text = 'Could not open' MM.tempfile2 'for writing..'
gadgets = '"*_Ok'
Requester(title,text,gadgets)
SIGNAL exit
END
CALL WRITECH(temphandle2,'Written with '||MM.PrgName||MM.Copyright||'0a'x)
IF Receivers.0 > 2 THEN
CALL WRITECH(temphandle2,'0a'x||'[Copies sent to: ')
ELSE
CALL WRITECH(temphandle2,'0a'x||'[Copy sent to: ')
FirstReceiver = 1
DO x = 1 TO Receivers.0
IF x ~= i THEN
DO
IF FirstReceiver = 0 THEN
CALL WRITECH(temphandle2,', ')
ELSE
FirstReceiver = 0
CALL WRITECH(temphandle2,Receivers.x)
END
END
CALL WRITECH(temphandle2,']'||'0a0a'x)
CALL WRITECH(temphandle2,BodyText)
CALL CLOSE temphandle2
DROP MM.Msg.
Msg.FromAddr= ''
Msg.To = receivers.i
Msg.ToAddr = addresses.i
Msg.Subj = subject
Msg.File = MM.TempFile2
Msg.Tear = MM.PrgName
MM_WriteMsg MM.AreaTag Msg
END
SIGNAL exit
/* --------------------------------------------------------------------- */
ReadCC: PROCEDURE EXPOSE receivers. addresses. MM.
PARSE ARG CfgFileName
ReceiverCounter = 0
DROP MM.File.
MM_ReadStem CfgFileName MM.File
IF rc ~= 0 THEN
DO
title = 'Error!'
text = 'Could not open' CfgFileName 'for reading..'
gadgets = 'Ok'
Requester(title,text,gadgets)
SIGNAL exit
END
DO j = 0 FOR MM.File.Count
PARSE VAR MM.File.j receiver '@' fidoaddress
receiver = STRIP(receiver,'B')
fidoaddress = STRIP(fidoaddress,'B')
IF receiver ~= "" THEN
DO
IF fidoaddress ~= "" THEN
DO
ReceiverCounter = ReceiverCounter + 1
receivers.ReceiverCounter = receiver
addresses.ReceiverCounter = fidoaddress
END
ELSE
DO
titolo = 'Error!'
text ='There seems to be missing a @ in' CfgFileName'.'
gadgets = 'Ok'
Requester(titolo,text,gadgets)
SIGNAL exit
END
END
END
receivers.0 = ReceiverCounter
RETURN
syntax:
SAY rc ERRORTEXT(rc) 'in line' SIGL
failure:
exit:
ADDRESS MAILMANAGER MM_DeleteFile MM.tempfile1
ADDRESS MAILMANAGER MM_DeleteFile MM.tempfile2
EXIT
/* --------------------------------------------------------------------- */
Requester: PROCEDURE EXPOSE MM.
PARSE ARG Titolo, Testo, GadGets
MM_Requester '"'Titolo'"' 'Testo' 'GadGets'
RETURN rc
/* --------------------------------------------------------------------- */
Trasforma: PROCEDURE EXPOSE MM.
PARSE ARG String
IF INDEX(String,'%')=0 THEN RETURN String
String = Replace(String,MM.TempFile1, '%s')
RETURN String
/* ---------------------------------------------------------------------- */
Replace: PROCEDURE
PARSE ARG String, New, Old
DO WHILE INDEX(String, Old) ~= 0 ; INTERPRET "PARSE VAR String l '"Old"' r" ; String = l || New || r ; END
RETURN String
/* --------------------------------------------------------------------- */