;SilverMail 1.1 ALPHA ;SilverSwd, 2000 ;All bug reports and comments can be sent to silversword@pairc.com ;This was started under 5.61 and not all code has been updated with the new versions, old code was left alone if it still worked as I have just started scripting again and didn't feel like messing with it. on *:start: { loadvars if (%sm.check == 1) .timerauchk 0 $calc(%sm.chkmin * 60) auchk } on *:connect: { if (%sm.check == 1) && ($timer(auchk) == $null) { .timerauchk 0 $calc(%sm.chkmin * 60) auchk } } alias smail { if ($dialog(mail)) { dialog -v mail mail | return } var %1 = $readini $smfile(profiles.sml) user color if (%1 != $rgb(face)) { writeini $smfile(profiles.sml) user color $rgb(face) bmpvert } dialog -md mail mail did -g mail 2 $scriptdirgraphics\bmail1.bmp did -g mail 5 $scriptdirgraphics\bmail2.bmp did -g mail 6 $scriptdirgraphics\bmail3.bmp did -g mail 7 $scriptdirgraphics\bmail4.bmp did -g mail 8 $scriptdirgraphics\bmail5.bmp did -g mail 11 $scriptdirgraphics\bmail10.bmp disfolder mail 9 loadvars smsgs } alias smsgs { did -r mail 3 var %msg.file = $scriptdir $+ %sm.user $+ \ $+ $did(mail,9,$did(mail,9).sel) $+ \messages.sml if ($exists(%msg.file) != $true) { goto end } var %msg.lines = $lines(%msg.file) var %msg.cur = 1 :loop var %msg.temp = $read -l $+ %msg.cur $smadd(%msg.file) did -a mail 3 $gettok(%msg.temp,1,159) inc %msg.cur if (%msg.cur > %msg.lines) goto end goto loop :end if (%msg.lines < 0) var %msg.lines = 0 did -o mail 10 1 Total messages: %msg.lines } dialog mail { title "SilverMail 1.1" size -1 -1 500 350 button "okeeDokee", 1, 1 1 1 1, ok icon 2, 3 2 49 38 list 3, 1 45 498 100 edit "",4, 1 135 498 210, multi, vsbar, read icon 5, 57 2 49 38 icon 6, 111 2 49 38 icon 7, 165 2 49 38 icon 8, 273 2 49 38 combo 9, 348 2 150 150, drop text "", 10, 348 28 150 15 icon 11, 219 2 49 38 } on *:dialog:mail:sclick:2: { sockopen mail %sm.pop3 110 | sockmark mail get 1 | dialog -md getso getso | did -g getso 2 $scriptdir\graphics\mail1.bmp | did -o getso 3 1 Contacting %sm.pop3 } on *:dialog:mail:dclick:3: { var %msg.file = $scriptdir $+ %sm.user $+ \ $+ $did(mail,9,$did(mail,9).sel) $+ \messages.sml var %read.temp = $read -l $+ $did(3).sel $smadd(%msg.file) did -r mail 4 var %msg.file = $scriptdir $+ %sm.user $+ \ $+ $did(mail,9,$did(mail,9).sel) $+ \ $+ $gettok(%read.temp,2,159) $+ .sml filter -fo $smadd(%msg.file) mail 4 } on *:dialog:mail:sclick:5: { if ($did(3).sel == $null) { return } var %msg.file = $scriptdir $+ %sm.user $+ \ $+ $did(mail,9,$did(mail,9).sel) $+ \messages.sml var %del.temp = $read -l $+ $did(3).sel $smadd(%msg.file) var %del.temp = $gettok(%del.temp,2,159) write -dl $+ $did(3).sel $smadd(%msg.file) var %msg.file = $scriptdir $+ %sm.user $+ \ $+ $did(mail,9,$did(mail,9).sel) $+ \ $+ %del.temp $+ .sml .remove $smadd(%msg.file) smsgs } on *:dialog:mail:sclick:6: { if ($dialog(wmail)) { dialog -v wmail wmail } else dialog -md wmail wmail } on *:dialog:mail:sclick:7: { if ($dialog(pmail)) { dialog -v pmail pmail } else { dialog -md pmail pmail | .timer 1 0 shus | .timer 1 0 vh3 | .timer 1 0 shab | .timer -m 1 250 shpro } } on *:dialog:mail:sclick:8: { if ($dialog(aboutsm)) { dialog -v aboutsm aboutsm } else dialog -md aboutsm aboutsm } on *:dialog:mail:sclick:9: { smsgs } on *:dialog:mail:sclick:11: { if ($dialog(filesml)) { dialog -v filesml filesml } else dialog -md filesml filesml } on *:sockopen:mail: { if ($sockerr > 0) { if (%mail.auchk != 1) did -o getso 3 1 Error contacting %sm.pop3 } } on *:sockread:mail: { if ($sockerr > 0) { if (%mail.auchk != 1) did -o getso 3 1 Error recieving data | return } :get sockread -f %mail.temp if ($sockbr == 0) return if (%mail.temp == $null) set %mail.temp $chr(160) if ($gettok(%mail.temp,1,32) == +OK) && ($sock(mail).mark == get 1) { sockwrite -n mail USER %sm.login sockmark mail get 2 if (%mail.auchk != 1) { did -o getso 3 1 Contacted, logging in } goto end } if ($gettok(%mail.temp,1,32) == -ERR) { sockwrite -n mail QUIT sockclose mail if (%mail.auchk != 1) { did -o getso 3 1 Error getting mail } goto end } if ($gettok(%mail.temp,1,32) == +OK) && ($sock(mail).mark == get 2) { sockwrite -n mail PASS $decrypt(%sm.pass) sockmark mail get 3 goto end } if ($gettok(%mail.temp,1,32) == +OK) && ($sock(mail).mark == get 3) { sockwrite -n mail STAT sockmark mail get 4 if (%mail.auchk != 1) { did -o getso 3 1 Logged in, checking for mail } goto end } if ($gettok(%mail.temp,1,32) == +OK) && ($sock(mail).mark == get 4) && ($gettok(%mail.temp,2,32) > 0) { if (%mail.auchk != 1) { set %mail.getnum $gettok(%mail.temp,2,32) set %mail.curnum 1 set %mail.tbyte $gettok(%mail.temp,3,32) sockmark mail get 5 sockwrite -n mail RETR 1 if ($calc(%mail.getnum + 1) > 1) { did -o getso 3 1 Getting message %mail.curnum of %mail.getnum } goto end } if (%mail.auchk == 1) { if ($calc($gettok(%mail.temp,2,32) + 1) > 1) aumail $gettok(%mail.temp,2,32) $gettok(%mail.temp,3,32) sockwrite -n mail QUIT unset %mail.* } } if ($gettok(%mail.temp,1,32) == +OK) && ($sock(mail).mark == get 4) && ($gettok(%mail.temp,2,32) == 0) { sockwrite -n mail QUIT if (%mail.auchk != 1) { did -o getso 3 1 No messages } goto end } if ($sock(mail).mark == get 5) && ($gettok(%mail.temp,1,32) != .) && ($gettok(%mail.temp,1,32) != +OK) { var %mail.file = temp $+ %mail.curnum $+ .sml write $smfile(%mail.file) %mail.temp inc %mail.cbyte $sockbr did -o getso 4 1 Retrieving: $percent(%mail.cbyte,%mail.tbyte) goto end } if ($sock(mail).mark == get 5) && ($gettok(%mail.temp,1,32) == .) && ($gettok(%mail.temp,1,32) != +OK) { mailvert %mail.curnum if (%mail.curnum == %mail.getnum) { sockwrite -n mail QUIT | sockclose mail | dialog -x getso | unset %mail.* | goto end } inc %mail.curnum did -o getso 3 1 Getting message %mail.curnum of %mail.getnum sockwrite -n mail RETR %mail.curnum } :end } alias mailvert { var %vert.file = $scriptdirtemp $+ $1 $+ .sml window -lh @1 window -lh @2 window -lh @3 window -lh @4 window -lh @5 filter -fwn $smadd(%vert.file) @1 *From:* filter -fwn $smadd(%vert.file) @2 *To:* filter -fwn $smadd(%vert.file) @3 Subject:* filter -fwn $smadd(%vert.file) @4 *Date:* filter -fwn $smadd(%vert.file) @5 *Status:* var %vert.hash = $deltok($line(@1,1),1,32) $deltok($line(@3,1),1,32) var %vert.hash = $hash(%vert.hash,32) var %msg.file = $scriptdir $+ %sm.user $+ \Inbox\ $+ %vert.hash $+ .sml var %vert.file2 = $smadd(%msg.file) write %vert.file2 $read -l $+ $gettok($line(@1,1),1,32) %vert.file write %vert.file2 $read -l $+ $gettok($line(@2,1),1,32) %vert.file write %vert.file2 $read -l $+ $gettok($line(@3,1),1,32) %vert.file write %vert.file2 $read -l $+ $gettok($line(@4,1),1,32) %vert.file var %vert.line = [ $calc($gettok($line(@5,1),1,32) + 1) $+ - [ $+ [ $lines(%vert.file) ] ] ] filter -ffr %vert.line %vert.file %vert.file2 var %vert.temp1 = $read -l1 %vert.file2 var %vert.temp2 = $read -l3 %vert.file2 var %msg.file = $scriptdir $+ %sm.user $+ \Inbox\messages.sml write $smadd(%msg.file) $gettok(%vert.temp1,2,58) $gettok(%vert.temp2,2,58) $+ $chr(159) $+ %vert.hash .remove %vert.file window -c @1 window -c @2 window -c @3 window -c @4 window -c @5 smsgs } dialog wmail { title "SilverMail Composer" size -1 -1 430 300 button "I hate these things", 1, 1 1 1 1, ok icon 2, 3 2 49 38 text "To:", 3, 23 47 15 20 edit "", 4, 45 45 380 20, autohs text "Subject:", 5, 1 72 40 20 edit "", 6, 45 70 380 20, autohs edit "", 7, 5 95 420 200, multi, autovs, vsbar, return icon 8, 57 2 49 38 icon 9, 111 2 49 38 icon 10, 165 2 49 38 } on *:dialog:wmail:init:0: { did -g wmail 2 $scriptdirgraphics\bmail6.bmp did -g wmail 8 $scriptdirgraphics\bmail7.bmp did -g wmail 9 $scriptdirgraphics\bmail8.bmp did -g wmail 10 $scriptdirgraphics\bmail9.bmp } on *:dialog:wmail:sclick:2: { sockopen send %sm.smtp 25 sockmark send send 1 svsentmsg dialog -md getso getso did -g getso 2 $scriptdir\graphics\mail1.bmp did -o getso 3 1 Contacting %sm.smtp } on *:dialog:wmail:sclick:8: { if ($dialog(pmail)) { dialog -v pmail pmail } else { dialog -md pmail pmail | .timer 1 0 shus | .timer 1 0 vh16 | .timer 1 0 shab | .timer -m 1 250 shpro 2 } } on *:dialog:wmail:sclick:9: { .timer 1 0 sadr } on *:dialog:wmail:sclick:10: { .timer 1 0 opdr } on *:sockopen:send: { if ($sockerr > 0) { did -o getso 3 1 Error contacting %sm.smtp | return } } on *:sockread:send: { if ($sockerr > 0) { aline -p @watch Error | return } sockread -f %send.temp if ($left(%send.temp,1) == 2) && ($sock(send).mark == send 1) { did -o getso 3 1 Logging in sockwrite -n send HELO $ip sockmark send send 2 } if (($left(%send.temp,1) == 4) || ($left(%send.temp,1) == 5)) && ($sock(send).mark == send 1) { sockwrite -n send QUIT did -o getso 3 1 Error logging in } if ($left(%send.temp,1) == 2) && ($sock(send).mark == send 2) { sockwrite -n send MAIL FROM: %sm.address did -o getso 3 1 Sending sockmark send send 3 } if (($left(%send.temp,1) == 4) || ($left(%send.temp,1) == 5)) && ($sock(send).mark == send 2) { sockwrite -n send QUIT did -o getso 3 1 Error sending } if ($left(%send.temp,1) == 2) && ($sock(send).mark == send 3) { if ($numtok($did(wmail,4).text,44) > 1) { var %rcpt.num $numtok($did(wmail,4).text,44) var %rcpt.cur = 1 :sendloop sockwrite -n send RCPT TO: $gettok($did(wmail,4).text,%rcpt.cur,44) inc %rcpt.cur if (%rcpt.cur > %rcpt.num) goto endrcpt goto sendloop } else { sockwrite -n send RCPT TO: $did(wmail,4).text } :endrcpt sockmark send send 4 } if (($left(%send.temp,1) == 4) || ($left(%send.temp,1) == 5)) && ($sock(send).mark == send 3) { sockwrite -n send QUIT did -o getso 3 1 Error sending } if ($left(%send.temp,1) == 2) && ($sock(send).mark == send 4) { sockwrite -n send DATA sockmark send send 5 } if (($left(%send.temp,1) == 4) || ($left(%send.temp,1) == 5)) && ($sock(send).mark == send 4) { sockwrite -n send QUIT did -o getso 3 1 Error sending } if ($left(%send.temp,3) == 354) && ($sock(send).mark == send 5) { set %send.num $did(wmail,7).lines set %send.temp 1 sockwrite -n send From: %sm.address sockwrite -n send To: $did(wmail,4).text sockwrite -n send Subject: $did(wmail,6).text sockwrite -n send Return-Address: %sm.address sockwrite -n send Date: $fulldate sockmark send send 6 } if (($left(%send.temp,1) == 4) || ($left(%send.temp,1) == 5)) && (($sock(send).mark == send 5) || ($sock(send).mark == send 6) || ($sock(send).mark == send 7)) { sockwrite -n send QUIT } } on *:sockwrite:send: { if ($sock(send).mark == send 6) { if ($sockerr > 0) { did -o getso 3 1 Error sending | return } if (%send.temp > %send.num) { if (%sm.sig == 1) addsig | dialog -x getso | dialog -x wmail | sockwrite -n send $crlf $+ . | sockwrite -n send QUIT | sockmark send send 7 | return } sockwrite -n send $did(wmail,7,%send.temp).text inc %send.temp } :end } dialog getso { title "Contacting..." size -1 -1 200 34 button "holyhell", 1, 1 1 1 1, cancel icon 2, 1 1 32 32 text "", 3, 40 1 158 15 text "", 4, 40 16 158 15 } on *:dialog:getso:sclick:1: { sockclose mail sockclose send } dialog pmail { title "SilverMail Profiles" size -1 -1 380 170 button "Ok", 1, 120 145 60 23, ok combo 2, 1 1 95 100, drop radio "Servers", 3, 100 1 52 21, push text "POP3 Server:", 4, 1 38 65 20 edit "", 5, 70 35 300 20, autohs text "Login:", 6, 37 63 65 20 edit "", 7, 70 60 130 20, autohs text "Pass:", 8, 205 63 65 20 edit "", 9, 235 60 135 20, autohs, pass text "SMTP Server:", 10, 1 87 68 20 edit "", 11, 70 85 300 20, autohs text "Email Address:", 12, 1 112 69 20 edit "", 13, 70 110 300 20, autohs button "New User", 14, 185 145 60 23 button "Cancel", 15, 315 145 60 23, cancel radio "Address", 16, 156 1 52 21, push list 17, 219 35 150 108, extsel text "Email Address:", 18, 1 38 69 20 edit "", 19, 70 35 145 20, autohs text "Nickname:", 20, 19 63 65 20 edit "", 21, 70 60 145 20, autohs button "Add", 22, 25 85 60 20 button "Delete", 23, 155 85 60 20 button "Mail To", 24, 90 85 60 20 radio "Options", 25, 212 1 52 21, push check "Check for new mail every", 26, 10 35 150 20 edit "", 27, 165 35 40 20 check "Show new mail graphic", 28, 10 60 150 20 check "Show Nicknames in Address Book", 29, 10 85 200 20 check "Play new mail sound", 30, 10 110 115 20 radio "Signature", 31, 268 1 52 21, push check "Use signature file", 32, 10 35 100 20 edit "", 33, 115 35 187 20, read, autohs button "Browse", 34, 307 35 60 20 edit "", 35, 10 60 357 72, read, multi, autovs, vsbar edit "", 36, 130 110 172 20, read, autohs button "Browse", 37, 307 110 60 20 button "Modify", 38, 25 110 60 20 button "Import", 39, 90 110 60 20 button "Export", 40, 155 110 60 20 button "Del. User", 41, 250 145 60 23 radio "Folders", 42, 324 1 52 21, push list 43, 219 35 150 108 button "Add", 44, 3 35 50 20 edit "", 45, 58 35 156 20, autohs button "Empty", 46, 3 60 50 20 edit "", 47, 58 60 156 20, read, autohs button "Delete", 48, 3 85 50 20 edit "", 49, 58 85 156 20, read, autohs } on *:dialog:pmail:sclick:14: { .timer 1 0 addmus } on *:dialog:pmail:sclick:1: { if ($did(2).sel != $null) writeini $smfile(profiles.sml) user number $did(2).sel if ($did(2,$did(2).sel).text != $null) writeini $smfile(profiles.sml) user current $did(2,$did(2).sel).text if ($did(5).text != $null) writeini $smfile(profiles.sml) $did(2,$did(2).sel).text pop3 $did(5).text if ($did(7).text != $null) writeini $smfile(profiles.sml) $did(2,$did(2).sel).text login $did(7).text if ($did(9).text != $null) writeini $smfile(profiles.sml) $did(2,$did(2).sel).text pass $encrypt($did(9).text) if ($did(11).text != $null) writeini $smfile(profiles.sml) $did(2,$did(2).sel).text smtp $did(11).text if ($did(13).text != $null) writeini $smfile(profiles.sml) $did(2,$did(2).sel).text address $did(13).text writeini $smfile(profiles.sml) $did(2,$did(2).sel).text check $did(26).state if ($did(27).text != $null) writeini $smfile(profiles.sml) $did(2,$did(2).sel).text chkmin $did(27).text writeini $smfile(profiles.sml) $did(2,$did(2).sel).text graphic $did(28).state writeini $smfile(profiles.sml) $did(2,$did(2).sel).text nickname $did(29).state writeini $smfile(profiles.sml) $did(2,$did(2).sel).text sound $did(30).state writeini $smfile(profiles.sml) $did(2,$did(2).sel).text signature $did(32).state if ($did(33).text != $null) writeini $smfile(profiles.sml) $did(2,$did(2).sel).text sigfile $did(33).text if ($did(36).text != $null) writeini $smfile(profiles.sml) $did(2,$did(2).sel).text sndfile $did(36).text loadvars if (%sm.check == 1) { .timerauchk off | .timerauchk 0 $calc(%sm.chkmin * 60) auchk } if (%sm.check == 0) && ($timer(auchk) != $null) .timerauchk off } on *:dialog:pmail:sclick:2: { uscha } on *:dialog:pmail:sclick:16: { vh16 } on *:dialog:pmail:sclick:3: { vh3 } on *:dialog:pmail:sclick:22: { write $smfile($smuser(abook)) $did(19).text $+ $chr(159) $+ $did(21).text | did -r pmail 19 | did -r pmail 21 | shab } on *:dialog:pmail:sclick:23: if ($did(17).sel != $null) { write -dl $+ $did(17).sel $smfile($smuser(abook)) | shab } on *:dialog:pmail:sclick:24: { if ($dialog(wmail) != wmail) { dialog -md wmail wmail } if ($did(17,0).sel == 1) { var %temp388 = $read -l $+ $did(17).sel $smfile($smuser(abook)) | did -a wmail 4 $gettok(%temp388,1,159) } if ($did(17,0).sel > 1) { var %temp11 = $did(17,0).sel var %temp12 = 1 :lewpy var %temp388 = $read -l $+ $did(17,%temp12).sel $smfile($smuser(abook)) did -a wmail 4 $gettok(%temp388,1,159) inc %temp12 if (%temp12 > %temp11) goto end did -a wmail 4 , goto lewpy :end } } on *:dialog:pmail:sclick:25: { vh25 } on *:dialog:pmail:sclick:26: { if ($did(26).state == 1) { did -e pmail 27,28,30,36,37 } if ($did(26).state == 0) { did -b pmail 27,28,30,36,37 } } on *:dialog:pmail:sclick:31: { vh31 } on *:dialog:pmail:sclick:32: { if ($did(32).state == 1) { did -e pmail 33,34,35 } if ($did(32).state == 0) { did -b pmail 33,34,35 } } on *:dialog:pmail:sclick:34: { .timer 1 0 getsig } on *:dialog:pmail:sclick:37: { .timer 1 0 getsnd } on *:dialog:pmail:sclick:38: { if ($did(17).sel != $null) { var %ab.temp = $read -l $+ $did(17).sel $smfile($smuser(abook)) did -r pmail 19,21 did -a pmail 19 $gettok(%ab.temp,1,159) did -a pmail 21 $gettok(%ab.temp,2,159) write -dl $+ $did(17).sel $smfile($smuser(abook)) shab } } on *:dialog:pmail:sclick:39: { inab } on *:dialog:pmail:sclick:40: { exab } on *:dialog:pmail:sclick:41: { remus } on *:dialog:pmail:sclick:42: { vh42 } on *:dialog:pmail:sclick:44: { if ($did(45) != $null) { var %1 = $scriptdir $+ $smuser(folders) if ($exists(%1) != $true) write -c $smfile($smuser(folders)) var %1 = $replace($did(45),$chr(32),$chr(160)) window -h @1 filter -fw $smfile($smuser(folders)) @1 %1 window -c @1 if ($filtered > 0) { did -r pmail 45 return } write $smfile($smuser(folders)) %1 var %1 = $scriptdir $+ %sm.user $+ \ $+ %1 mkdir $smadd(%1) var %1 = %1 $+ \ $+ messages.sml write -c $smadd(%1) disfolder pmail 43 if ($dialog(filesml)) disfolder filesml 4 if ($dialog(mail)) disfolder mail 9 did -r pmail 45 } } alias getsig { did -r pmail 33,35 var %browse.temp = $dir"Select File" did -a pmail 33 %browse.temp filter -fo $smadd(%browse.temp) pmail 35 dialog -v pmail pmail } alias getsnd { did -r pmail 36 var %browse.temp = $dir"Select File" did -a pmail 36 %browse.temp dialog -v pmail pmail } alias vh3 { did -v pmail 4,5,6,7,8,9,10,11,12,13 did -h pmail 17,18,19,20,21,22,23,24,26,27,28,29,30,32,33,34,35,36,37,38,39,40,43,44,45,46,47,48,49 } alias vh16 { did -v pmail 17,18,19,20,21,22,23,24,38,39,40 did -h pmail 4,5,6,7,8,9,10,11,12,13,26,27,28,29,30,32,33,34,35,36,37,43,44,45,46,47,48,49 } alias vh25 { did -v pmail 26,27,28,29,30,36,37 did -h pmail 17,18,19,20,21,22,23,24,4,5,6,7,8,9,10,11,12,13,32,33,34,35,38,39,40,43,44,45,46,47,48,49 } alias vh31 { did -v pmail 32,33,34,35 did -h pmail 26,27,28,29,30,36,37,17,18,19,20,21,22,23,24,4,5,6,7,8,9,10,11,12,13,38,39,40,43,44,45,46,47,48,49 } alias vh42 { did -v pmail 43,44,45,46,47,48,49 did -h pmail 26,27,28,29,30,36,37,17,18,19,20,21,22,23,24,4,5,6,7,8,9,10,11,12,13,38,39,40,32,33,34,35 } alias addmus { var %temppp = $mailput(Username?) var %temppp = $replace(%temppp,$chr(32),$chr(160)) write $smfile(users.sml) %temppp mkdir $smfile(%temppp) var %tmpm = %temppp $+ \inbox\messages.sml var %1 = %temppp $+ \sent\messages.sml var %2 = %temppp $+ \inbox var %3 = %temppp $+ \sent var %tmpa = %temppp $+ \abook.sml mkdir $smfile(%2) mkdir $smfile(%3) write -c $smfile(%tmpm) write -c $smfile(%1) write -c $smfile(%tmpa) shus did -c pmail 2 $did(pmail,2).lines uscha dialog -v pmail pmail } alias remus { var %temppp = $did(pmail,2,$did(pmail,2).sel).text var %temppp2 = $did(pmail,2).sel var %bleh = $scriptdir $+ %temppp write -dl $+ %temppp2 $smfile(users.sml) remini $smfile(profiles.sml) %temppp var %temp = $findfile(%bleh,*.*,0,.remove $1) rmdir $smfile(%temppp) shus did -c pmail 2 1 uscha dialog -v pmail pmail } alias shus { did -r pmail 2 | filter -fo $smfile(users.sml) pmail 2 } alias shab { did -r pmail 17 var %ab.file = $scriptdir $+ %sm.user $+ \abook.sml if ($exists(%ab.file) != $true) { goto end } var %ab.lines = $lines(%ab.file) var %ab.cur = 1 :loop var %ab.temp = $read -l $+ %ab.cur $smadd(%ab.file) if (%sm.nickname != 1) did -a pmail 17 $gettok(%ab.temp,1,159) if (%sm.nickname == 1) did -a pmail 17 $gettok(%ab.temp,2,159) inc %ab.cur if (%ab.cur > %ab.lines) goto end goto loop :end } alias shpro { if ($1 == $null) did -c pmail 3 if ($1 == 2) did -c pmail 16 if ($1 == 3) did -c pmail 42 did -c pmail 2 %sm.unum did -a pmail 5 %sm.pop3 did -a pmail 7 %sm.login did -a pmail 9 %sm.pass did -a pmail 11 %sm.smtp did -a pmail 13 %sm.address if (%sm.check == 1) did -c pmail 26 if (%sm.check == 0) { did -b pmail 27,28,30,36,37 } did -a pmail 27 %sm.chkmin if (%sm.graphic == 1) did -c pmail 28 if (%sm.nickname == 1) did -c pmail 29 if (%sm.sound == 1) did -c pmail 30 if (%sm.sig == 1) { did -c pmail 32 } if (%sm.sig == 0) { did -b pmail 33,34,35 } did -a pmail 33 %sm.sigfile did -a pmail 36 %sm.sndfile if ($exists(%sm.sigfile) == $true) filter -fo $smadd(%sm.sigfile) pmail 35 did -h pmail 35 if ($1 != 3) did -h pmail 43 disfolder pmail 43 } alias -l encrypt { return $replace($1-,a,Ç,b,À,c,Á,d,Â,e,Ã,f,Ä,g,Å,h,Æ,i,ý,j,È,k,É,l,Ë,m,Ì,n,Í,o,Î,p,Ï,q,Ð,r,Ñ,s,Ò,t,ï,u,Ô,v,Õ,w,Ö,x,Ù,y,Ú,z,Û,?,Ü,!,ÿ,:,Ý,;,Þ,1,ß,2,à,3,á,4,â,5,ã,6,ä,7,å,8,æ,9,ç,0,è) } alias -l decrypt { return $replace($1-,è,0,ç,9,æ,8,å,7,ä,6,ã,5,â,4,á,3,à,2,ß,1,Þ,;,Ý,:,ÿ,!,Ü,?,Û,z,Ú,y,Ù,x,Ö,w,Õ,v,Ô,u,ï,t,Ò,s,Ñ,r,Ð,q,Ï,p,Î,o,Í,n,Ì,m,Ë,l,É,k,È,j,ý,i,Æ,h,Å,g,Ä,f,Ã,e,Â,d,Á,c,À,b,Ç,a) } alias uscha { set %sm.unum $did(pmail,2).sel set %sm.user $did(pmail,2,$did(pmail,2).sel).text set %sm.pop3 $readini $smfile(profiles.sml) %sm.user pop3 set %sm.login $readini $smfile(profiles.sml) %sm.user login set %sm.pass $readini $smfile(profiles.sml) %sm.user pass set %sm.smtp $readini $smfile(profiles.sml) %sm.user smtp set %sm.address $readini $smfile(profiles.sml) %sm.user address set %sm.check $readini $smfile(profiles.sml) %sm.user check set %sm.chkmin $readini $smfile(profiles.sml) %sm.user chkmin set %sm.graphic $readini $smfile(profiles.sml) %sm.user graphic set %sm.nickname $readini $smfile(profiles.sml) %sm.user nickname set %sm.sound $readini $smfile(profiles.sml) %sm.user sound set %sm.sig $readini $smfile(profiles.sml) %sm.user signature set %sm.sigfile $readini $smfile(profiles.sml) %sm.user sigfile set %sm.sndfile $readini $smfile(profiles.sml) %sm.user sndfile did -r pmail 5,7,9,11,13,27,33,35,36 did -u pmail 26,28,29,30,32 did -a pmail 5 %sm.pop3 did -a pmail 7 %sm.login did -a pmail 9 %sm.pass did -a pmail 11 %sm.smtp did -a pmail 13 %sm.address if (%sm.check == 1) { did -c pmail 26 | did -e pmail 27,28,30,36,37 } if (%sm.check == 0) { did -b pmail 27,28,30,36,37 } did -a pmail 27 %sm.chkmin if (%sm.graphic == 1) did -c pmail 28 if (%sm.nickname == 1) did -c pmail 29 if (%sm.sound == 1) did -c pmail 30 if (%sm.sig == 1) { did -c pmail 32 | did -e pmail 33,34,35 } if (%sm.sig == 0) { did -b pmail 33,34,35 } did -a pmail 33 %sm.sigfile did -a pmail 36 %sm.sndfile if ($exists(%sm.sigfile) == $true) filter -fo $smadd(%sm.sigfile) pmail 35 if ($did(pmail,32).visible == $false) did -h pmail 35 shab if ($dialog(mail) == mail) { did -r mail 3 | smsgs } } alias auchk { set %mail.auchk 1 sockopen mail %sm.pop3 110 sockmark mail get 1 } alias aumail { var %temp! $readini $smfile(profiles.sml) %sm.user new? if (%temp! != $1 $2) { echo -a You have $1 new message(s) if (%sm.graphic == 1) { .timer 1 0 set %mail.draw 0 | .timerfred -m 0 500 damail } if (%sm.sound == 1) { .splay $smadd(%sm.sndfile) } } writeini $smfile(profiles.sml) %sm.user new? $1 $2 } alias damail { if (%mail.draw == 0) { window -apk +b @mail 1 1 77 41 | drawpic @mail 0 0 $smfile(graphics\mail2.bmp) | set %mail.draw 1 | goto end } if (%mail.draw == 1) { window -apk +b @mail 1 1 77 41 | drawpic @mail 0 0 $smfile(graphics\mail3.bmp) | set %mail.draw 0 | goto end } :end } menu @mail { sclick: { .timerfred off | window -c @mail | unset %mail.draw } } alias addsig { if ($exists(%sm.sigfile) == $false) return var %sig.temp = $lines(%sm.sigfile) var %sig.temp2 = 1 :addsig if (%sig.temp2 > %sig.temp) goto end var %sig.temp3 = $read -l $+ %sig.temp2 $smadd(%sm.sigfile) sockwrite -n send %sig.temp3 inc %sig.temp2 goto addsig :end } dialog aboutsm { title "About SilverMail" size -1 -1 200 115 button ":(", 100, 390 290 1 1, cancel text "SilverMail 1.1 ALPHA", 1, 1 1 200 25 text "By SilverSwd (silversword@pairc.com)", 2, 1 15 200 25 text "http://silvrscript.hypermart.net", 3, 1 29 200 25 box "Dedicated to:", 4, 1 45 197 65 text "Rebecca Traylor", 5, 5 60 100 15 text "Ryann Frye", 6, 5 75 100 15 text "April Yamarino", 7, 5 90 100 15 } menu menubar,status { SilverMail: smail } alias exab { var %ab.file = $scriptdir $+ %sm.user $+ \abook.sml if ($exists(%ab.file) != $true) { goto end } var %ab.lines = $lines(%ab.file) var %ab.cur = 1 :loop var %ab.temp = $read -l $+ %ab.cur $smadd(%ab.file) writeini $smadd($mircdiraddrbk.ini) $gettok($gettok(%ab.temp,2,159),1,32) email $gettok(%ab.temp,1,159) inc %ab.cur if (%ab.cur > %ab.lines) goto end goto loop :end } alias inab { if ($exists($mircdiraddrbk.ini) != $true) { goto end } filter -ff $smadd($mircdiraddrbk.ini) $smfile(temp.sml) [*] var %inab.lines = $lines($scriptdirtemp.sml) var %inab.cur = 1 :loop var %inab.temp = $read -l $+ %inab.cur $smfile(temp.sml) var %inab.temp = $remove(%inab.temp,[,]) var %inab.temp1 = $readini $smadd($mircdiraddrbk.ini) %inab.temp email write $smfile($smuser(abook)) %inab.temp1 $+ $chr(159) $+ %inab.temp if (%inab.lines = %inab.cur) goto end inc %inab.cur goto loop :end shab .remove $smfile(temp.sml) } alias sadr { var %sadr.dir = $scriptdir $+ %sm.user $+ \drafts if ($isdir(%sadr.dir) != $true) .mkdir $smadd(%sadr.dir) var %sadr.temp = $mailput(Save draft as?) var %1 = %sadr.dir $+ \ $+ %sadr.temp $+ .sml write $smadd(%1) $did(wmail,4) write $smadd(%1) $did(wmail,6) filter -if wmail 7 $smadd(%1) } alias opdr { did -r wmail 4,6,7 window -h @opdr var %opdr.dir = $smfile($smuser(drafts\*)) var %opdr.temp = $dir="Open Draft" %opdr.dir did -a wmail 4 $read -l1 $smadd(%opdr.temp) did -a wmail 6 $read -l2 $smadd(%opdr.temp) filter -fw $smadd(%opdr.temp) @opdr dline @opdr 1-2 filter -wo @opdr wmail 7 window -c @opdr dialog -v wmail wmail } alias -l loadvars { set %sm.unum $readini $smfile(profiles.sml) user number set %sm.user $readini $smfile(profiles.sml) user current set %sm.pop3 $readini $smfile(profiles.sml) %sm.user pop3 set %sm.login $readini $smfile(profiles.sml) %sm.user login set %sm.pass $readini $smfile(profiles.sml) %sm.user pass set %sm.smtp $readini $smfile(profiles.sml) %sm.user smtp set %sm.address $readini $smfile(profiles.sml) %sm.user address set %sm.check $readini $smfile(profiles.sml) %sm.user check set %sm.chkmin $readini $smfile(profiles.sml) %sm.user chkmin set %sm.graphic $readini $smfile(profiles.sml) %sm.user graphic set %sm.nickname $readini $smfile(profiles.sml) %sm.user nickname set %sm.sound $readini $smfile(profiles.sml) %sm.user sound set %sm.sndfile $readini $smfile(profiles.sml) %sm.user sndfile set %sm.sig $readini $smfile(profiles.sml) %sm.user signature set %sm.sigfile $readini $smfile(profiles.sml) %sm.user sigfile } alias -l smfile { return " $+ $scriptdir $+ $1 $+ " } alias -l smuser { return %sm.user $+ \ $+ $1 $+ .sml } alias -l smadd { return " $+ $1 $+ " } alias -l bmpvert { var %1 = 1 window -hp +b @1 1 1 52 41 :1 drawfill -r @1 $rgb(face) $rgb(0,1,0) 1 1 var %2 = graphics\base $+ %1 $+ .bmp var %3 = graphics\bmail $+ %1 $+ .bmp drawpic -t @1 $rgb(157,185,200) 0 0 $smfile(%2) drawsave @1 $smfile(%3) clear @1 inc %1 if (%1 > 10) { window -c @1 return } goto 1 } alias -l percent { if (($2 < 1) || ($2 !isnum)) return 100% if (($1 < 1) || ($1 !isnum)) return 0% return $round($calc($1 / $2 * 100),0) $+ $chr(37) } alias -l disfolder { did -r $1- did -a $1- Inbox did -a $1- Sent var %1 = $scriptdir $+ $smuser(folders) if ($exists(%1) != $false) { filter -fo $smadd(%1) $1- } did -c $1- 1 } alias -l svsentmsg { var %msg.add = $did(wmail,4) $did(wmail,6) var %msg.hash = $hash(%msg.add,32) var %msg.file = $scriptdir $+ %sm.user $+ \sent\ $+ %msg.hash $+ .sml var %msg.file2 = $scriptdir $+ %sm.user $+ \sent\messages.sml write $smadd(%msg.file2) %msg.add $+ $chr(159) $+ %msg.hash write $smadd(%msg.file) From: %sm.address write $smadd(%msg.file) To: $did(wmail,4) write $smadd(%msg.file) Subject: $did(wmail,6) write $smadd(%msg.file) Date: $fulldate write $smadd(%msg.file) $chr(160) filter -if wmail 7 $smadd(%msg.file) if (%sm.sig == 1) filter -ff $smadd(%sm.sigfile) $smadd(%msg.file) } alias -l mailput { set %1 $1 return $$dialog(mailput,mailput,-4) } dialog mailput { title "SilverMail Input" size -1 -1 210 47 button "Ok", 1, 163 1 45 20, ok edit "", 2, 1 23 150 22, autohs, result, focus text "", 3, 2 5 160 12 button "Cancel", 4, 163 26 45 20, cancel } on *:dialog:mailput:init:0: { did -a mailput 3 %1 unset %1 } dialog filesml { title "File Message" size -1 -1 182 47 button "Ok", 1, 1 1 50 20, ok button "Edit Folders", 2, 56 1 70 20 button "Cancel", 3, 131 1 50 20, cancel combo 4, 1 25 180 100, drop } on *:dialog:filesml:init:0: { disfolder filesml 4 } on *:dialog:filesml:sclick:2: { if ($dialog(pmail)) { dialog -v pmail pmail } else { dialog -md pmail pmail .timer 1 0 shus .timer 1 0 vh42 .timer 1 0 shab .timer -m 1 250 shpro 3 } }