home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 35 Internet
/
35-Internet.zip
/
kkmail01.zip
/
kkcc.cmd
< prev
next >
Wrap
OS/2 REXX Batch file
|
1997-01-19
|
7KB
|
284 lines
/* kkcc.cmd âüü[âïÄ⌐ô«ô]æùâvâìâOâëâÇ */
'@echo off'
mprog = 'c:\mail\kkmail2a.cmd c:\mail' /* KKMAILé╠ïNô«âRâ}âôâhâëâCâô */
inbox = 'c:\mail\kkmail.inc' /* Ä≤ÉMêΩùùé╠âtâ@âCâïû╝ */
maildir= 'c:\mail\folder\inbox' /* inboxé╠âfâBâîâNâgâè */
mquedir= 'c:\mail\folder\mqueue' /* mqueueé╠âfâBâîâNâgâè */
keyword= '[' /* CCæ╬Å█é╠âLü[âÅü[âh
Subjecté╔é▒é╠ò╢ÄÜé¬è▄é▄éΩé─éóéΘéαé╠
é╛é»é≡CCé╔é╖éΘüB */
SendTo = 'takayuki@usui-3chi@imasy.or.jp' /* CCɵâAâhâîâXé≡ïLôⁿé╖éΘ */
no.0 = 0
Main:
'@del ' || inbox /* Ä≤ÉMâtâ@âCâïû╝êΩùùé≡ìφÅ£ */
'@call ' || mprog /* KKMailé≡ïNô«é╡é─âüü[âïé≡Ä≤ÉM */
call CheckSubject /* Subjecté╠â`âFâbâNé≡é╖éΘ */
if no2.0 > 0 then /* ô]æùæ╬Å█é╠âüü[âïé¬éáéΘé⌐ */
call BCC /* BCCìUîé */
exit
/* ô₧Æàâüü[âïé╠âTâuâWâFâNâgé≡èmöFé╖éΘ */
CheckSubject:
i = 0
do forever
if lines(inbox) = 0 then leave
buf = linein(inbox)
repstr = left(buf, 4) /* Boxö╘ìåéτé╡é½é╘é╘é±é╠é╞âèé╛é╡ */
if verify(repstr, " 0123456789") = 0 then do
if length(buf) < 27 then
ttlstr = ""
else
ttlstr = right(buf, length(buf) - 20) /* Titleéτé╡é½òöò¬é╠é╞âèé╛é╡27? */
/* ö¡î╛âüü[âïé╚éτô]æùé╖éΘé╠é┼âoâbâtâ@é╔ö╘ìåé≡Æ~éªéΘ */
if pos(keyword, translate(ttlstr)) > 0 then do
i = i + 1
no2.i = GetReplyNo(repstr)
end
end
end
no2.0 = i
call stream inbox, 'c', 'close'
if i > 0 then say 'Found ' || i || ' messages'
return
/* É│èmé╚âèâvâëâCö╘ìåé≡ĵéΦÅoé╖ */
GetReplyNo:
arg str
str2 = str
po = lastpos(' ', str)
if po > 0 then do
str2 = right(str, length(str) - po)
end
return strip(str2)
/* Ä└ì█é╠âüü[âïé≡âìü[âhé╖éΘ */
OpenMail:
arg mailno
mailf = maildir || '\' || mailno
j = 0
do forever
if lines(mailf) = 0 then leave
j = j + 1
mail.j = linein(mailf)
end
call stream mailf, 'c', 'close'
mail.0 = j
return
/* âLü[âÅü[âhéµéΦâüü[âïâoâbâtâ@é≡ÆTé╖ */
SearchMail:
arg searchkey
do j = 1 to mail.j
if pos(searchkey, translate(mail.j)) > 0 then do
return mail.j
end
end
return ""
/* ô]æùö╘ìåâoâbâtâ@é⌐éτô]æùâüâbâZü[âWé≡ì∞éΦÅoé╖üB */
ForwardMail:
say 'Make Forward Mail'
do j = 1 to no.0
call ReadMail no.j
call MakeSendAdr
call MakeNewMail
call SaveMail
end
say 'Send Forward Mail'
'@call ' || mprog
say 'Delete Recived Mails'
do j = 1 to no.0
f = maildir || '\' || no.j
'@del ' || f
end
return
/* ô]æùö╘ìåâoâbâtâ@é⌐éτBCCâüâbâZü[âWé≡ì∞éΦÅoé╖üB */
BCC:
say 'Make BCC Mail'
do j = 1 to no2.0
call ReadMail no2.j
call MakeBCCMail
call SaveMail
end
say 'Send BCC Mail'
'@call ' || mprog
return
/* âüü[âïô╟é▌é╛é╖ */
ReadMail:
parse arg n
MailSubj = ""
MailSubj2= ""
MailFrom = ""
flgHdr = 0
flgBody = 0
MailBody.1 = 'To: '
MailBody.2 = 'Fcc: '
MailBody.3 = 'From: '
MailBody.4 = 'Reply-To: '
MailBody.5 = 'Subject: '
MailBody.6 = 'X-Mailer: anonymous'
MailBody.7 = ''
i = 7
f = maildir || '\' || n
do forever
if lines(f) = 0 then leave
buf = linein(f)
/* Subjecté╠ò╥ÅW */
if length(buf) > 9 & translate(left(buf, 9)) = 'SUBJECT: ' then do
MailSubj = strip(right(buf, length(buf) - 9))
p = pos('KSML@', translate(MailSubj))
if p > 0 then do
MailSubj2 = right(MailSubj, length(MailSubj) - (p + 5 - 1))
if pos('RE', translate(left(MailSubj, 2))) > 0 then
MailSubj = 'Re: ' || MailSubj2
end
end
/* Fromé╠ĵô╛ */
if length(buf) > 6 & translate(left(buf, 6)) = 'FROM: ' then do
MailFrom = strip(right(buf, length(buf) - 6))
end
if length(buf) > 4 & translate(left(buf, 4)) = 'TO: ' then do
flgHdr = 1
end
if flgHdr = 1 & length(strip(buf)) = 0 then do
flgBody = 1
end
if flgBody = 1 then do
i = i + 1
MailBody.i = buf
end
end
MailBody.0 = i
call stream f, 'c', 'close'
return
/* ô]æùɵâAâhâîâXé╠ì∞ɼ */
MakeSendAdr:
SendTo = ''
if MailSubj2 \= '' then do
do forever
if lines(SendAdr) = 0 then leave
buf = linein(SendAdr)
if length(buf) > 1 then do
if length(to) > 0 then SendTo = SendTo || ','
SendTo = SendTo || buf
end
end
call stream SendAdr, 'c', 'close'
end
else
SendTo = 'GBC01001@niftyserve.or.jp'
return
/* âüü[âïé╠î`ɼ */
MakeBCCMail:
do i = 1 to MailBody.0
if translate(MailBody.i) = 'TO: ' then do
MailBody.i = 'Bcc: ' || SendTo
end
if translate(MailBody.i) = 'FCC: ' then do
MailBody.i = 'Fcc: outbox'
end
if translate(left(MailBody.i, 6)) = 'FROM: ' then do
MailBody.i = 'From: ' || MailFrom
end
if translate(MailBody.i) = 'SUBJECT: ' then do
MailBody.i = 'Subject: ' || MailSubj
end
end
return
/* âüü[âïé╠î`ɼ */
MakeNewMail:
do i = 1 to MailBody.0
if translate(MailBody.i) = 'TO: ' then do
MailBody.i = 'To: ' || SendTo
end
if translate(MailBody.i) = 'FCC: ' then do
if MailSubj2 \= '' then
MailBody.i = 'Fcc: ' || 'KSML'
else
MailBody.i = 'Fcc: ' || 'forw'
end
if translate(left(MailBody.i, 6)) = 'FROM: ' then do
MailBody.i = 'From: ' || MailFrom
end
if translate(MailBody.i) = 'REPLY-TO: ' then do
MailBody.i = 'Reply-To: ku@sysken.or.jp'
end
if translate(MailBody.i) = 'SUBJECT: ' then do
if MailSubj2 \= '' then do
MsgCnt = GetCnt()
MailBody.i = 'Subject: KSML@#' || MsgCnt || ' ' || MailSubj2
call PutCnt MsgCnt + 1
end
else do
MailBody.i = 'Subject: FWD ' || MailSubj
end
end
end
return
GetCnt:
n = linein(sendcnt, 1)
call stream sendcnt, 'c', 'close'
return n
PutCnt:
arg n
call lineout sendcnt, n, 1
call stream sendcnt, 'c', 'close'
return
/* Mailé≡èiö[é╖éΘ */
SaveMail:
MailNo = GetNumberPms()
call PutNumberPms MailNo + 1
f = mquedir || '\' || MailNo
do i = 1 to MailBody.0
call lineout f, MailBody.i
end
call stream f, 'c', 'close'
return
/* ăé╠âüü[âïö╘ìåé≡ô╟é▌é╛é╖ */
GetNumberPms:
fname = mquedir || '\number.pms'
rb = stream(fname, "c", "OPEN READ")
if rb = "READY:" then do
n = linein( fname, 1 )
call stream fname, "c", "CLOSE"
end
else do
n = -1
end
return n
/* ăé╠âüü[âïö╘ìåé≡ïLÿ^é╖éΘ */
PutNumberPms:
parse arg n
fname = mquedir || '\number.pms'
rb = stream(fname, "c", "OPEN WRITE")
if rb = "READY:" then do
call lineout fname,n,1
call lineout fname
call stream fname,"c","CLOSE"
end
else do
say "âëâXâgâüü[âïNoâtâ@âCâï("||fname||")é¬ì∞ɼé┼é½é▄é╣é±"
return 0
end
return 1