From 4508b1b66315ee51effe1b62ca44152319c555d2 Mon Sep 17 00:00:00 2001 From: philippe_mingo Date: Thu, 15 Nov 2001 15:57:11 +0000 Subject: [PATCH] Included newmail for officialization 8) git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@1761 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- plugins/newmail/HISTORY | 72 ++++++++ plugins/newmail/README | 42 +++++ plugins/newmail/newmail.php | 36 ++++ plugins/newmail/newmail_opt.php | 175 ++++++++++++++++++ plugins/newmail/setup.php | 239 +++++++++++++++++++++++++ plugins/newmail/sounds/FanFair.wav | Bin 0 -> 5814 bytes plugins/newmail/sounds/Friends.wav | Bin 0 -> 3190 bytes plugins/newmail/sounds/MontyPython.wav | Bin 0 -> 6570 bytes plugins/newmail/sounds/Notify.wav | Bin 0 -> 4522 bytes plugins/newmail/testsound.php | 25 +++ 10 files changed, 589 insertions(+) create mode 100644 plugins/newmail/HISTORY create mode 100644 plugins/newmail/README create mode 100644 plugins/newmail/newmail.php create mode 100644 plugins/newmail/newmail_opt.php create mode 100644 plugins/newmail/setup.php create mode 100644 plugins/newmail/sounds/FanFair.wav create mode 100644 plugins/newmail/sounds/Friends.wav create mode 100644 plugins/newmail/sounds/MontyPython.wav create mode 100644 plugins/newmail/sounds/Notify.wav create mode 100644 plugins/newmail/testsound.php diff --git a/plugins/newmail/HISTORY b/plugins/newmail/HISTORY new file mode 100644 index 00000000..70c4bf02 --- /dev/null +++ b/plugins/newmail/HISTORY @@ -0,0 +1,72 @@ +This is the history for the newmail plugin in SquirrelMail. Currently +works with the 1.1.2+ versions of SquirrelMail. + +2.1 + +Fixes bug in when used with the 1.1.3 distro + + + +2.0 + +Adds a "try" sounds option to the Newmail plugins works with 1.1.2 + + + + +1.4 + +Tyler Akins cleaned up the javascript and now it can change the title +bar's text if you have new mail. Additionally, this now correctly +uses the new 1.1.1 validate.php format. Uses the new +sqimap_unseen_messages() format in 1.1.2. + +1.3a + +Hm. Apparently the Sent box is being used to indicate new mail when +checking all folders. Disabled this. Ditto for the Trash folder +as well. + +Changed the plugin name to "newmail", seeing that it really is more +than just a sound plugin ;) + + +1.3 + +Now added the ability to only check for RECENT messages (those that +have not had their information not yet looked at). Once a message +is "noticed", it will not show up again as recent. Nice for +people who want to limit the number of notifications. + +Also changed the popup from a javascript alert to a popup window. +This way, it doesn't screw up the browser near as much. + +Finally, I added a new sub-directory called sounds. Put in here +any sounds you want users to choose from. They now can choose +from any file in that directory via a drop-down menu in the options +screen (or, they can still choose a local file). + +1.2 + +Added the ability to show a popup window on new mail arrival (via a +JavaScript function). + +Added the ability to check for ONLY the INBOX for unseen messages +(the default). Also fixed a bug in counting unseen messages. ;) + +1.1 + +Now added the ability to turn off this feature for users who don't want +it. The default is NOT enabled, so you need to go to the options menu to +turn it on. + +Also a nice way to reset the file back to the server default. + +1.0 + +First release (with an option page)! + +0.9 + +First pass-through of making a plugin. Hack hack hack . . . + diff --git a/plugins/newmail/README b/plugins/newmail/README new file mode 100644 index 00000000..ea6fb67f --- /dev/null +++ b/plugins/newmail/README @@ -0,0 +1,42 @@ +Ok, this is my first attempt at a plugin, so excuse the mess you may find +in here. + +This plugin is used to play sounds (currently a WAV file) through the +browser whenever the user has unseen messages flagged in the left window +pane. There are options available (on the options page of course) to +disable this feature for each user, and to select different media files +from the users local computer. The default is that this is NOT enabled, +so you'll need to go to the options menu to turn it on first! There are +also options to show a popup window via JavaScript. + +I tried to make this fairly simple to install. To install the plugin: + + 1. Change to the plugins directory. + + $ cd plugins/ + + 2. Unarchive the plugin. + + $ tar zxvf /your/path/to/newmail-x.x.tgz + + 2. This should create a newmail/ directory under plugins. + + 4. Go to the config directory and run conf.pl + + $ cd ../../config/ + $ ./conf.pl + + 5. Choose option 8 and proceed to add the new plugin following + the instructions there. Save and exit, and your plugin should + be in place. + +Any questions, you can let me know -- + +Mike Huttinger +huttinger@ipact.com + +----------------------------------------- + +Modifications by Tyler Akins to support changing the title bar and for the +new 1.1.1 validate.php format. Also uses the new sqimap_unseen_messages() +function in 1.1.2 diff --git a/plugins/newmail/newmail.php b/plugins/newmail/newmail.php new file mode 100644 index 00000000..4a9ab308 --- /dev/null +++ b/plugins/newmail/newmail.php @@ -0,0 +1,36 @@ + + +New Mail + topmargin=0 leftmargin=0 +rightmargin=0 marginwidth=0 marginheight=0> +
+ + + + + + +
> +
SquirrelMail Notice:
+
+
+
+ >You have new +mail!
+
+ +
+
+
+
+ + diff --git a/plugins/newmail/newmail_opt.php b/plugins/newmail/newmail_opt.php new file mode 100644 index 00000000..0f942fc8 --- /dev/null +++ b/plugins/newmail/newmail_opt.php @@ -0,0 +1,175 @@ + +
+
+
- New Mail Notification v1.2
+
+

+Select Enable Media Playing to turn on playing a media file when +unseen mail is in your folders. When enabled, you can specify the media file to play in the provided +file box.

+ +The Check all boxes, not just INBOX option will check ALL of your +folders for unseen mail, not just the inbox for notification.

+ +Selecting the Show popup option will enable the showing of a popup +window when unseen mail is in your folders (requires JavaScript).

+ +Use the Check RECENT to only check for messages that are recent. +Recent messages are those that have just recently showed up and have not +been "viewed" or checked yet. This can prevent being continuously annoyed +by sounds or popups for unseen mail.

+ +Selecting the Change title option will change the title in some +browsers to let you know when you have new mail (requires JavaScript, and +only works in IE but you won't see errors with other browsers). +This will always tell you if you have new mail, even if you have +Check RECENT enabled.

+ +Select from the list of server files the media file to play when +new mail arrives. Selecting local media will play the file +specified in the local media file box to play from the local +computer. If no file is specified, the system will use a default from the +server. + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  + + + name=media_enable> Enable Media Playing +
  + + + name=media_allbox> Check all boxes, not just INBOX +
  + + + name=media_recent> Count only messages that are RECENT +
  + + + name=media_changetitle> Change title on supported browsers. +  (requires IE and JavaScript to work) +
  + + + name=media_popup> Show popup window on new mail +  (requires JavaScript to work) +
Select server file: + + + +
Local Media File : + + +
Current File: + + + name=media_default> + +
  + + +
+
+
+ diff --git a/plugins/newmail/setup.php b/plugins/newmail/setup.php new file mode 100644 index 00000000..f5951f0a --- /dev/null +++ b/plugins/newmail/setup.php @@ -0,0 +1,239 @@ + 0, then we play a sound (using the HTML at the + ** far end of this script). + ** + ** This was tested with IE5.0 - but I hear Netscape works well, + ** too (with a plugin). + **/ + + function CheckNewMailboxSound($imapConnection, $mailbox, $real_box, $delimeter, $unseen, &$total_unseen) { + global $folder_prefix, $trash_folder, $sent_folder; + global $color, $move_to_sent, $move_to_trash; + global $unseen_notify, $unseen_type, $newmail_allbox, $newmail_recent; + global $newmail_changetitle; + + $mailboxURL = urlencode($real_box); + $unseen_found = 0; + + // Skip folders for Sent and Trash + + if ($real_box == $sent_folder || $real_box == $trash_folder) + { + return 0; + } + + if (($unseen_notify == 2 && $real_box == "INBOX") || + ($unseen_notify == 3 && ($newmail_allbox == "on" || + $real_box == "INBOX"))) { + $unseen = sqimap_unseen_messages($imapConnection, $real_box); + $total_unseen += $unseen; + + if($newmail_recent == 'on') + $unseen = sqimap_mailbox_select($imapConnection,$real_box,true,true); + + if ($unseen > 0) { + $unseen_found = 1; + } + } + return $unseen_found; + } + +function squirrelmail_plugin_init_newmail() { + global $squirrelmail_plugin_hooks; + + $squirrelmail_plugin_hooks["left_main_before"]["newmail"] = "newmail_plugin"; + $squirrelmail_plugin_hooks["options_link_and_description"]["newmail"] = "newmail_opt"; + $squirrelmail_plugin_hooks["options_save"]["newmail"] = "newmail_sav"; + $squirrelmail_plugin_hooks["loading_prefs"]["newmail"] = "newmail_pref"; + +} + +function newmail_opt() { + global $color; + ?> + + + + + + + +
+ New Mail Notification +
+ This configures settings for playing sounds and/or showing + popup windows when new mail arrives. +
+ New Mail Notification options saved"; + } +} + +function newmail_pref() { + + global $username,$data_dir; + global $newmail_media,$newmail_enable,$newmail_popup,$newmail_allbox; + global $newmail_recent, $newmail_changetitle; + + $newmail_recent = getPref($data_dir,$username,"newmail_recent"); + $newmail_enable = getPref($data_dir,$username,"newmail_enable"); + $newmail_media = getPref($data_dir, $username, "newmail_media"); + $newmail_popup = getPref($data_dir, $username, "newmail_popup"); + $newmail_allbox = getPref($data_dir, $username, "newmail_allbox"); + $newmail_changetitle = getPref($data_dir, $username, "newmail_changetitle"); + + if ($newmail_media == "") + { + $newmail_media = "../plugins/newmail/sounds/Notify.wav"; + } + +} + +function newmail_plugin() { + + global $username,$key,$imapServerAddress,$imapPort; + global $newmail_media,$newmail_enable,$newmail_popup,$newmail_recent; + global $newmail_changetitle; + + if ($newmail_enable == "on" || $newmail_popup == "on" || $newmail_changetitle) { + + // open a connection on the imap port (143) + + $imapConnection = sqimap_login($username, $key, $imapServerAddress, $imapPort, 10); // the 10 is to hide the output + + $boxes = sqimap_mailbox_list($imapConnection); + $delimeter = sqimap_get_delimiter($imapConnection); + + $status = 0; + $totalNew = 0; + + for ($i = 0;$i < count($boxes); $i++) { + $line = ""; + $mailbox = $boxes[$i]["formatted"]; + + if (! isset($boxes[$i]['unseen'])) + $boxes[$i]['unseen'] = ''; + if ($boxes[$i]["flags"]) { + $noselect = false; + for ($h = 0; $h < count($boxes[$i]["flags"]); $h++) { + if (strtolower($boxes[$i]["flags"][$h]) == "noselect") + $noselect = true; + } + if (! $noselect) { + $status = $status + CheckNewMailboxSound($imapConnection, $mailbox, + $boxes[$i]["unformatted"], $delimeter, $boxes[$i]["unseen"], + $totalNew); + } + } else { + $status = $status + CheckNewMailboxSound($imapConnection, $mailbox, $boxes[$i]["unformatted"], + $delimeter, $boxes[$i]["unseen"], $totalNew); + } + + } + sqimap_logout($imapConnection); + + // If we found unseen messages, then we + // will play the sound as follows: + + if ($newmail_changetitle) { +?> + + 0 && $newmail_enable == "on") { + echo ""; + } + if ($status >0 && $newmail_popup == "on") { +?> + + diff --git a/plugins/newmail/sounds/FanFair.wav b/plugins/newmail/sounds/FanFair.wav new file mode 100644 index 0000000000000000000000000000000000000000..697371e21732d80ecf6dba0a813e1e9bb78bb724 GIT binary patch literal 5814 zcmd7WS5Op9y8z%JNmf8|Toy#4k|iwBC5HthgAyc2kR|I!TB78ns7ub01VmAk;G!U) zfMfy5pbLV4WJ%kH{r>xN^Vg|5eK9>#Q`7U-Q}5f;J!X2^+I6fDWTj!L<#sm^#tT7^ z1w;Zdia}5(HFS0cL3C$F(zBkNgcS0laC5pHNPc!@V*^1hPJvF=XHSDA$xeua#A3t7 z(2?}+jNn5%NC+8xsjyvFNI`*>>)h&>WIFOF9vc_~BM(DoAWTRt9a0yz<&X1E`TLirx;(y{-Ry7 z0z|&J#gJ8uD+o<=Z-3XbitDBCij7{}`5qH2TMzIe2mVMy!~p2KF|b4DUep@6Gd+3n zDIh!uY0XakeJQtJG5~#LNq0jMH!^S>C+JJjR14^!#l0PI56rjso zOLrwKECQ$RAD5cFV%$zR?6zMtw9z5&mNC)T@u{*DxwVf~G@IjU;kJ3rgIQ+fYF0Tf zKBmzK)VlM&c1z5r?(-ma1AIdF0%1*-+1uaTTnawBNd64*!bqo>Z`Ff*@W#S|`xu%AtK!T0>R-j{mf$@&zw(y(9nsQlEW?xs}J#= z$XU^mHOIuMkL)BoOcrI&U3Xg=S1rolGo*`jtK&IoM-vVBIIsKksoV6LW5&~Cc2rC+ zFn(xHx@qw0#?Hs(d_kQ9**!(d%VKxBOE5tG{$TUl#e{`Ng&<$~p!5-~>v9wLNv5o7 zsXjCZs#9ORx3(HTk*kmh*-0f6@O^w0qoH>B(9t>A zpP;7|wznGtMR=}hVSWmG4GPW`H$XRJWJJF3v0nuQqJb92N4HKWRR7N>xddJ|Mjo&# z8{qMnj@KWeA|Q_hsN!+#^r!J!Ynvy^>bj?bnQQIK{!uc?d}^X)mOBH3q1PsS4}yzT z--cT;>$wAaKJJQ$myAyHGA~2^W?#o*!`^JqI1>#N*-1;<;UQnbikLRF&13-3pES_A z3g&>7GM#Eugnd#P^;cHR{Po#Nh2o9=&`QopAAUU66ya!EZWVY>*}ga7O9BJ`K+@uZ z)Vk?gy8wp2}%Ky5m1o5ab4J=PMV!cBf6pQ z9%si^b@`}E@jHo~p`-7fVr;_ikbW¥T;oUuY?@A%X=;5`v7Dg=b>=ir$ zPWq385l+#?x3Ny)*aOKfCmTF!NOqlQU@sW+ZJ8%U0orxa_#iq$ONy&j-0~Qe?knOp|u#{o&?MDqQUs&(-u*-U(dZBmmmAp zD^rKQ@7wNl&@bAIzzs*QIEcL<8rZPKJo!x$FAN##g+v!pF*TIjR;TJWl}|sHH70#m zN16TmZz+A;0Q(3FuEQ@Lv`pyD9HN0GCxU6TxW|OVfV@zqOk;B8!TI(m z+i|bFMiIMZ$C-ZV@}2OY5)`xPL=k1P+G@ie8rW#(3!TZVqN_aKo%mSC-D6Dk>2wFf z!q1DMmrohC7B_)2-cUndD*B}eIIdyz^T54Hs$bXKEWS*DXEJ}dB>^OL6(vFzZV0~) z=6Gn<&HCX6-U6Q*5JEHv<0KR9E3z~GK?tQ$n$nN4soYv&&ac7T-{quSS@9Nq&|0e4 z$&WlJbk*IJ=i@{DI+kHCD^EtMjeqmc;^F~0%{t}f)i^M?k6Q18)rY}1$GgopLE0s* zu)hJ7S+1GEHX=j=GzaO%SKQsVO6;i&WY~YLvqPU< z!?40gG5l9EQZveT(%cX7U=)3uXu?kZXYHNHZtw6IwuKmO1>^x89a8xD^b z0mY<@+<~=3gB&i+)z-7v0w)sweALU^1ml$d0n;!cNoyMc3elz(73Z$p2*^07$qX7v zP=>?~rheR-ZRFOp^8!u!H~Th9$n>{Y-wbzsSjOzLQK94HOi~M9?#dnXYD{V2EI+b~ zcubMJRz$u2z4WcgzK*wL^e}q@-TVO7-C|V0BylQ`(porPC-q5-%wk>Zlt(}-T4SgS z&qOqM!O@{P+ODA$%UU+6+ggR0iNh{a^16G+AA@ja-R+@MLnSiljzZyd-52C?gmqe- z7ieMk3|_lxho`}fOEj_JsZ=)SG|3l^_l~w0$>ZTqBj#{)h|BWDLfTY|t@##|<%l$* zK^eE^`yNuq-pDjjaVAPu9HC|=DKwiRL6)%Vd2=jix+j*&DYEC(;TX&y&s~(AQTfzeiDNmCs)Lb^tLIJ^ilQ=w;{P z>*rcA(db~IzGi}3KG__Z79xOjNI-xumM7RENr5&KucbF^mE4||CQjodN8 zgOGZ93TOt~uPBjN1p9S40I=NzQ|Z``WCqgZ^xLIi8?O;hnnao7{0abIE`>!V|AmpX z7E6Q|?3O_I%?;6;k|sZvc3R{I-K?JH_4FTgSSbXc`;I3(-@KeFTKbyaAMbcknkzii z-j!VzZv|G%BtJ0In=)E7U)vke{ykFkr<98F`i4tA*hsV;@(ajMAsP&Ed!HMG^l2uK z!3ZF%=rCOnSjHW(it4bFL}a$`-!+q#-;{Z8J-4&BhUhzrJ%AhGc!WAPPpR`TrLm;L z2L2`f73|p$lnfERW^r>{A6cZ1^{Q2Jo7Vb#tyQ~t3j=M|0nwnDt0Sae-MLqM{{l8? zrRS-m-}r2Vb{;`n6P&Uz&nw1h3dv!{W{XhV`*I)0MPYX~a&>fFLr*n-?}O>gD&$@KoZS3I&HwuA(Wd`yv4$tFY9zBAWKvMn4-&zRZ=km2841lqQMv5PToPtHn}gF@9+V+dN25L z-hBxJR!a4uM3Unj3?Z5loP7K%N&CaP#7Kkc8W*eLbK6%3V#tQ|%X{7e*(#6iy;T`G z=Tvl*VwTpchuj!U$Y`j_YHHtT)h0w@4FqdO7zGM{z^NW%_IImbqre5Lsa-2(!sbuk-vVsLsBf6nQA@6l@n^WlOne#)zC0>zI$aLy zlI9q2v=jwB)Ef*}X~qC!Vxh$*T>_I7nuWlqSd}@YS`z6 zC!ch{u2gp-XQe~{^1O8|eg3T$pI5vyt;vaw4%Snn9sM7kJ*=v^QTF+f#tQ@Su06L) z*9>a!$&%BYk6YDyvXSJjSFK%~q6f!~>QYbU1c@Pg{L5ypo@S1)=oAYjePsr#g{LW! zk=8pn#4UMhlU?+zsV1^HaSELNn+J1T;zE7UZIl)TJj0^`x7T#Tbk{e`q70n5B)8MOo<&TMEq+t-^c?lV>3PPqvF_DxB))oGl@&7P zlDzmZ{3y=>fXXu4biRvf|JFi3Y?t@!+lb-;v%d3+GDk`3L-F9*9jvFDdBYsoLHP=) zKO$6M2>uwtKa3tIiI86f8P7gkMG9sad7D_@r5Iq`I-kA1`W<67d!W=t2+O|kBxUoO zmt;~ zBmeBS;Bh*mDvMhSTgo?sD@*t4ezae{Aa;5(;=vqka`cqW==v|6hBXW@GZ11_JX;HU zp7M9z0u6{AuuIH?PVQaKPADYVCM9D<5r8B7B{FFW)EF9kbD0A+f(ZjG&1kORn$-BR z4V@ZTZ#mb)W5YW+cb|**d4;R@y8*U8>P?&qpS*ppSb<991PyT^ic5iohq9G~C?9#p52$P~4V_fBS;}XWI;1)miTL{mfLn?X2o%Q-*Eqjr+44&wJrkH-uK5eVz2n!&`XR z#CrubZr<2@`B}sBpO9u3&E&DE>*(o+w$w)2`Y7BuXdZnCuM++hF)wMDj#}-aQJO>& z4W_tadE22-P6Qh`*@fw@?^$Bb*6D-?=V|x^PMBV9u?pk!-6B3_Hn0AGdz{bA{b#!%$r_r?0T?#`oES=l9o5@>Tc4Bs!e=Mn&hqNqc0DInkhp zuM>W@7BjHE#DBKQMp1s;;i_roWZ)P-D(blB08T5&<|B-zb~14z+G^mKkze50w8o-> zO59+zD;({|;rM0zZN^Dz>hJN8@z>eE4Bdk|b@@?p5jDYPpTmPzi%810jj*qOC&6g% z>v3UZZwUzz?nFu){4#FcV!oJY>wA{u6*-TrFN-vvlICMh7Vg}cWUK`sQ1;(i;3g*; zpbY=KMU5_l!<9LJ6pzCQY-3}_t{%$CT===!e?6;L`TK#I_Y{fSdzHQhju#Tl1@Cr# zI5{qvJ^RycsaV}us#=k-HgKUkXl2PHa$rli3G6Oz-G8CKb?A@&Pabse#KOkw=65JngGAc-!15@Y~}Wm`F%zxCrR|{yHSpx|)kzivVgD}8K5{&H}seij6 z48X1_Pif?~V8Vv%8UVFi)KaBa+H3_gH87{HpIWMh-T$+9p5~4fI*W}NF|K*pJqA^0b7`h#V?J9DOioyZgY+`%ftm?E;) zdsT)rxGNVf*P(>O-mg&Tj@MN7Q~>Z}*xEm5NXZCA%!5z7*F)ORYL5FX_dj95wyq-4&VJwHeXh_OY{B0L! zHqo{2<(6cce-0=d9R|eNd5zmOE`GmN>JaLo*I;r5-ms)@pj=lSWxMvw%pDxV@&w7d z%(tR^tJ=WGLC(UbWI_@Hr3E3cT!b?ffC=4yYk@Q7-`Eu9OB*-pPd!FW2dZt~r~Kf= zLF&*sYA2Cw!)}%8FQ0mAXvK5BX<0QeC9YYVSH!t4)5Xdm_Fq9xb8DDUYVTqSOz{k` z;?K#)jAynNN*Np-oxXGxxVWn&OhGj0gT;zAlK<12kDt|gvD^zur4R<ggG64s6G$?$lTI#{|Ww@Nx|IbJ%Uy ztmHIiGUgAh1=RLr7Z<)z=`6^xrGhJ!IrZDt>LwRqJh;DFS{bCmBuZ?NPT&u$#6&bv zL|7(m4)iifT}fNillCpd{5vOpg&*I_B15T@;GOJQ7rF#u|N2l@E?k_)CT;?7$S$gB zFIXfM?Jf0TMG=XOp%i{9bP;z}MZ6j>Ss06WHHM{WS4xVf%>-Q+Jw=tzZUBOFJhA() z+u58rB!J`o=N)v literal 0 HcmV?d00001 diff --git a/plugins/newmail/sounds/Friends.wav b/plugins/newmail/sounds/Friends.wav new file mode 100644 index 0000000000000000000000000000000000000000..b9397de08956c56a515ffd02f1f766f5a219ff11 GIT binary patch literal 3190 zcmcK6_dnI&9{}+8z2>!|%p2FWN(k4=`f$0|NW+#D$w(O`tBBi0xr8p=uPrO%eo9DY z!`4mqs3dz|n<(qPzxRIrgwNygIX|57!&%SsI*)U#&Kn#1a{<5=13M!xzaS(6003J6 z0`SQLKpPC8*8qTvo=jO?<=IFy_uEH~TzTRuX`gHG|=QtcHR!$hNacrkbx#iQZ_miCb)S z*2Vz;R2L6=R_4Tr{`OJ@V(OzZ-lF&bH-Bnw2PGRcrUZg{uIlIVvd5&b`XG43<~+8N zm5Iccfb`_Z%89N{{IPtA$xDL|JQDZ6gbVTd-O$A_U`Id@Emspvfl~%z< zM<~*HgkK8L#MMg=HHPw(J05KX)f&+fJ8 zGTV|uFSzqfL(mE;LF0p|4gQ|;icI)XE(Fb=g=OM-B3FUDACN0#YWx+n^zeQc_8|%xfSF9-ZAC4<#;Qy=+`W9baT? zelkG_o&u6bANs{6{PncqG6ytIQ0exesU*Wd5UGn8cQBEKz@ZSPM9I@d{VcCC`;#ft z*Kdc;S;L5hEIhKG!7+AB?i(>EfKF%CMO$PRR=xRHqSZqUuk24+&?!pxx($LOjW+J% zwnFf~47fz$URvqld_y2@I5_V%@<@w?S56oJxD_U-T-a*s?c+|R z86*ztIjBUe&hUo@+Jw35Fenkx!Z45)#(FJH#ajTQnRf-en-t;QKObD)-GdEvAEvEK zAK(rr1WX!_sG&51dpOvu`@dt^_d$O$CApU*4Sw%tkLx*mg!_E*cmq;!Oe9{arnn-T zOKl>b?VGj{AQUr6Qr{6qf(!!$oEb6A^vN5dxq8I9?{#VaW^v~Jr~6U<2T1QlWYH;# zkQELrZC2kO3@)Z++R>wmR*j>sku&9kk#7f`mbA&L>bT_*C2-fM(QoX$+G9=Lr}O)y!iVSlkIXDEoKskm3Y$*4GH+r0aaLR- z?PY|<8MBT+i$q57(hZD+nN;Rxt=j?cNSpa@y>_d7e3Eo4TWBv2IE27}DS`qXw}ss8 zky)5{j}ZR`rG?q2Gi%QeKJV9A$O{nODoPasul+FX3w_x5z1Dj{21IWHtxlM~S8IQc5%&hYj82-i-GllBp>0@jfzDcIZtfJ*@@g7(vkLcMx^wkj!!0okgE)8; zVrr3oK0I2fpc3hKa7NCB@XEf#h*fW1^rRuc%&unow<<=oTqf(VSk7+F%GyfK4m|kA zxS8jMpIIY&1Y1`x_ly%_{gT=7WiQ`l z;ONl;uFWJaE_g_yKIH{-*VyeS(H^PX5`)Ga%hHwgVYa~=M9gtL>t{myxb2Pmj|bEh zbVVQKlrGACDJ1Rn67L9Wi-F?UWCx~rS-R9kcMOTE2Vr7w-mXMGwqE-d# zE!<(vOuG}b&A2f{8S)F}wfD7XtkM@-9Kbt!U0{prFZp~P{t{X9nDjF?mP`^?b85h4 zo0>VpN(;M?n_pCMe&uHtqEeK(v*E)E9n5fsK^Yul+`XZ}Q~L8u2^0ANuV!Ip;AJ#n4KH_%TFw#4OX{T%tvm`DTc73{_xIU>sv;S)b(oiF$#7Ybw= zn_W++zJIHOPyXCWS#53h-yYY^0!8=}x)##}s=P5}}2E=)f=-JlWjY`{!Q5pEl^N4@($7mt;)$vQO19 zz27C*?a7Y%X=5FgnK3K5;=3=z<0zikR;i{PU*3?iHjNYEI*!4%@7Gcz4w@~~dovbu zdPjo=4+;<=G{2%gp(&O%{S^^^8SZVu{~ z@9ez*eMcK?c0YG5^y?&t+oM0bd`V>(d>6e#t9TpE9K60iFt%r}l#V-!SZeBE! zeMsHrZt+*o)SQi>e3FBb;uDG3;}XMc{oB!;4Il4)P`j~=bRjHp)Rj6aZ)b5A>v)+c zxg85U+z+E(tbhMe(KV1teqT--TVohBi!JMwa_F#%{T|9c3{Kq*J)o&OpU3Mdh}eeJ zE#&K$e;M0PNBM1Eo`lE&tVK=Cd@Zk)3r&c}C%;5qN9Bzc^ngOjVHmhLdzAj3ik8Gi zJwy?=r-qJUm3`a^@W$I@06d3#;$ literal 0 HcmV?d00001 diff --git a/plugins/newmail/sounds/MontyPython.wav b/plugins/newmail/sounds/MontyPython.wav new file mode 100644 index 0000000000000000000000000000000000000000..0dc3655808e91801cf27cfd97a96eaf116e5cbe8 GIT binary patch literal 6570 zcmb{1Ra8{p+XwK&(2YY#H_{;?Edve>N)4@uq;xk@(jX<>NF&nVfYQxS!hi^fNF#!j zH0O1Gm+$reT%5Dd#eUXapY>hq*=uh-brqEoIshu(H%hg$|g$iu#3 zg&h}BU{S^3zW!+kQq%F_D(vQ@q=QmX_cty<0C53T6$JvKsOOs`VFX;1kRF0- zB08zk^C4(@MYN*-OZQ0JPvtr2A9V?IZl6-8@I7?Dg=yhC(VH~pi7cq zGE6c5DU)J$&}<5N!qK;|y4~L~hvTt-Ay{x(fH7dEhm0=$8h`;dY3>=*wtbWk>9R;> z-od76{4)!XdKnzDPj5FV`V;z&GnLVOJN;xRE1bnfGSo@uqpcN8H~Z5yO1wCFbZAxvo5f@QY@X9SI#dD*{%yLP(LSw#!K$YgUwddqore+ATT*4$wm=nhk*2VzKR81;0!O_>67Z^7%%#d~6v zPKzH{DS97>M6;uBLsq&Dy4JPeJQxG`U8TVjfM>k4;FFLkM>~aOdnhCQb%bJfw}D-E zGW-5@bVz1Odp*P|(IhOqvX9X!Zlr$YkQWtncIl%SS^toh#+&R>82yrEOUuk+HVc@- zUm`ap#c2rz>Q5177Kj87Is=S>5voZC*NAK)eK=?)f_bsI-XlLusvkA!9I|NwVsU?XyZ6huW=B?}~>%QOGObXG}5~t!xpyNWL`cR~g zYbSN94WiL-iS+3wO*a-8gO~J59wz{iid^C5DPSn)UL{E=s3#Y zM&0l(Oy@>!cME|{*E~RUpC7((7)?W}q^MhAqn*wPZ~9tN#FfG6w@)9C0bwS}KgECa zBwdD-S}xRS$2Riue>pIt>w#_q0V?lf8lof2+f<_+wmwNfLb0rWA77s}L5otjm4i*s z8ekmVGD#0>V{JFAF)~P+IvH0c8Ng}yu3}@)}rL zq&eVUKAIbE;d6{EQ~nirdbV$;_~ra^IE!BY9+Xul_AA-bBls{S$3wU2!)l#L5Ik^u zs=yzLrJ@dEa^S&$wL132|!2uF(-NG$kGMwFJDpB$kG z$57B6j6pg*)-HOp7oInx8D+jG=EK4NE{3*lHgl~a-U7Ms)XILbpKYB)v9?j6snwvc z^e~)C7a|FQ;H)4d6!M^O>nzkf0wyTgb*e3B>wl~y3v(r$;{CS3{Kf5c*xlurJ+Ge< zp%{ahyWys2Sioprb25vM^K9i6sLL1$j`cviSz@gPcq_yuJ8#&v%}Qgb;xi-4T~M#$`PZbxB;UJXL~1=bNJ`=J z1ykT@W4HWl!EAFnODL!0L~X|GMIi!vY|%lzrS0~EkteaKxa_qU?NKqob?%fXW8g5x z07>7oKfNA^mnSj8$776ep<&*QMxGLWGJVi{p%T(j5aQ37fH-OSt#)7!0Gtf#6MKp& z(bVep{qF6ro5|2f1OsRnnjATViWZ55utqp`;$xAR4D#8E3k9i+;P`qHi3$2*45}D< zc2VV)(P|+hryp$XvM+ZMCdSEywPow9cGlv_Dg$ zFgJ>kHl3@%yW+Uo=(Vfk2S2OeA|d@FWQN@aYPGk={P&eSoo1%0>XY9t&k`{PBlNw7 zGe?S1d*$o%72kG(DUvgaaoWn>@-t);1K7o%*2I*MJ#xB33SFDO5F7^b>NOJqJLTha zZd1jasl|;?%$lv930ZDMsK{qeD0_D7zE_n;>3Q+X4#zwtO=BliO3(GE!x$hLv7=_r zVFSt2#>;8m8qxuC2jCb@6z$;WJP*OZ9S--j^`*W&&F=7O4S|R2A=sg0s%s=y*_?KH zgEG3*8bM8FwT0_hamjxCzo%ZC;G-z(^R|4(`>DHq%-mB-|8}*vvg*91c*lRPRE(HM zu&H^she*s$ez%LWY!dQ}_~jUzY+s^5%k@QjNylVh`5w+2{V$PQ66DSpgRcy|g9Ga? zaPl&ncWa6@J086qdiMkZKokl?JTFCRDJX^?S#T#=OgL3J$(uCLzrSGVoJfzC?u^)6 zNTf5tVcKJeJoX(<&BNbqJo-7~{!q*WX=B&>WWm9c4PR1DYGbw&Y{tQsb z6L7oY=V!KN ztIMV;&*T3!_#i3ugu!7bu5whoRL6s$p0^CCX~Lv#*hD^BwfNCG3;j*CCYW079(ioS zi^e(&uH(-%mj^9zrcjzg2sHYmWi#W8@QNMp;;7x{&v&X2oPp$27=!N&VI>250V+ZE zO~x$}j>URT@f-cb8bUN&Kq!EfmZ}aOIHne>3T-jDognk6O=75ElsRh4rL1V%;xLMz zij_iVzQTy|$A6Uim7)bJ#vN2qr6D<2OA}OWkqHE-BVq7F2xBnDsyK&SAJy{n-?Dk0 ztJ6>XT4k8^aI2}ff*$y=(US1xFCZX|APvkWyFc<^yABdcR&l21)5EJ)jypQBpAj(V5KT>5aQ zu91U%i5mIuT@o`2g`j&T^Do_6@Wy<$+_$})VdwT0g7zy0LgA}|;bLmFj8&s+C0b+o z@gPOw(IvyuZWFIm**NgZ_VZc4s)qV3SuaXn-FDvAD=*EY_JNmS$>7aZypJ^}z|CB|TuVSB%4T_44Dz9Co%tL^>zdn}OQ z!&|jXQwNPD3u*{J-S9N6`BSNb=$&y(mE`;!1g;`a$`kKU*l1OdRagWi#J>5juW;m4 z%*XoIB)_P$XRNJ7{JQ0EoxiGleRq3T8suQY7<4g*HMach)$(#nPzcCWXt_NM*{h$x zekOVLd#zLD>|ER5eCT#y%Jr9AaaGX6Bgu?0?QjcL+`0(p$4@+z%B_;0^f%7th7xc6 z|Ft~dm-%zPD5pEBOY1D*?eXO42!ocZg91 zROsoa14yuI@`f^|ka83*P4eOn9WBP7lWEtbYu`WW^YPUIvha_>?P6BF`Ep*DQz2f~ z_l4Q6$9rJN!O|_i{$oV=9cXR{)LOq<#A&P6sD4#2W?>$K)S;ceOzLMAH_=5Zgr z?=g^T?t8{~D0W?;^SjKbDdG`Srhx7qTWx;@z!>Z-_UFc+j}umW<|*^1rO%Ta!g1nj znqqj*q^HM>z^z6HO2JA56%vod7@(PYI=9aKP*+1lDei+)ChzP25GYfWD(5G7Fg@K= z@X7D}amI z`{gM(t5i_!q$(;s5G)4w9k$3*ah{pugW%R2AO5|kWxU|Kvzt}eY8uvSr>M4#Q{ER$ z)J(L7`s>x|)W#yeTJ&&sk~M zqX4l190!YFO0C4#mZ3b>gti+CZ`Xt`^43K2qf$TIS|gR~{{|=Nm&29GMf*gkD|3w( zjGcI+Biq)9(PS8d_l%Gi=U8#}Kp+3bpDWtc%Sayk4EV~}(bXpF>R>Skyxi4IMhN>= zZ%nDd(c=7gj@4W8!r~qh<6L^F)+f#i_yB%)Qfp3GrV|yG z%In#b6^&k4jo7P;CtJs^W24n6cW%o_5k}50ruyp39j9Pgy;joLlnf+8MmLF{Gv^px z#Kgqz@?s2H7_ntGp=wbdC&v^vzC0!Vl9obqHayZ}-iqW+*oHO^lWI`AA;Le|3iJN# ziVx1OJ%@<^5w{6G^bmF|goLZdRprv1>ru~|>?nQy7nGE}%e*NX$N-PDSvkh?+LCn1 zFy>JUvjEuga%Z%&J1((|C-10?6`>8^t_6OI6)NtdJkiI|xp{<7Ms)!4PloOoTIql@ z7n=894j3Gvn?z6*-j8IRE~hBaR^kf0jBCG6j2T)PWs2+kw>#9q?Z4K1%oZJ5F9+B7 z-R=k181CqY`*y7xp^oLQ$4L*i`qT7YXq4wG2z^eIJimbgXj6hm)l}V;ay(kAmP$<+ zgB}){xvwY@)N()!S6wt(fQxVbV?0zUZeVJS{bwr7k*XGrh@T$g+LLc!u~2ZF;E-R` zenwWQF^WUE_e^iFAqD1uL!?$;vPBcnxEe(BZdCUpM|lSQP=qLNyFki}uVm2%`t$6s z+6iV~!>t+oI4lE~g{n6Sfh+2%VU?`Ct@>#uiVbk#HD{ZnTY(8dW#D8t z+T$)WS52Av+t_rkA^!^FQwe!1vYd?8%J26!(Xh}7KZ79_ zY@$7^czeKpnL%La?@e%Uuq%&&Z4`9f|+q4bxao zzJ#kFPQ#Ln%2vl4=@5~zu3N{0gPW+d>)&9Um+bAU)ei{kRPQI8P2*%0xfp|Q^x<Hg)vhMK~#{?4r@PdAs&Wnt=@X|!azv*TXeN$uz(_BYlh zjRC1hoP0P#V#?wl)~~d@?c@(RPt_hh8zyijYEv0;)gn%fmjXvf$6Gkr2I9+@u*n|9 zQosz9GvYrB8@DEMXNK377wA3E%admu({}PD;shv^gWe;)Ynr{Zoq5n=IsU}lOSkvS zoX$X$cXjoz*tK&cm=p6C8N23c^PuEs;F>X6BH``NBk#*H}Plx~tLg6#ny*bl9Yg8E1E9Z%PZq0OY>{S?^nCuE;)qo8G&cjM28$3Dh zxfBEthG7$YJ52vBKVHOu(`Ok$xp&0UyfrhC?m={?#(H#*1;URpm|<1AoQ3dD=@fbB z{s8_Y-#z1cK~h+`wtCXYtbqvJQ_ck6#11GB(Xe>u8OO#{yRQ|&yyjics3NARAdj3? zF2`Z!LV!*XXMonk>IkQz1k-C3_M4HyfqCf!MRt{2oc7E=vvh1u)@O2qHx@vZYC^S`wzKA_Gs2ko1%O{?tmGy zOHMzVX|EIMpV+%~w@;V9$CG!9-2`wMh3vN*^%Bv>j$sT?EJ{KfKV(Vmvm+m^Q}O(` zObqd_Tdg}RN6oHcyX(w1xpJ$tyXu~?e~`FwJ}R|8Y2SfUEBb{h%9L&NE#l2P zr`CJ^--1gsWVB6*Qr=f0w^Ggby)@|Y#^`JG-?yXlF$Ujh!&|q3m%80m#|@P01sT%J z?BT`S5f)T{2>^NIZfKpdq$X!);GD2=KaoG6?7c*Xc~dF9#aN+9b~Yj`=hUdCy6=M9 zGgthfn4%_`7_Sg&S+7W3&1%OE9i>WrW3=G!g2oukv-kEcKj$-YyNCOXfh)X$hf3V| zSS|hbWoe2r0TILN-yeA`1+V^~`#>hs;JfwK*2Vl>k11_wVy85wbE_XXgk>(OBaVmP z$(S*wL+v#!`fI%6Q#~Zaqz%+BlxMV{O;$+tAztYS^H~XWX`*Km`;2CsMQlD1?}yh% ze!)vb9fYnGSrbNU3>m&;(u-_|e)BhNL}9+I7=uLyrHuJ=o^eK{pNlR+Y+$M_ne4r| z{M*^@gv40SakQtYag?pcL!;^@q8G2~$gV7t)>NviBM}Ib?B{g} zJwD9UZ*)x%=>Xb-8V7OQZn_-#vM$Kx;tBP__yJRm@e^yRY#D%zcpiw#}H$V>*~ zwHG zl_Hb1)$iazO)@4Xbjz}GQsK!dFx9@6rabp;L8_PtLTr)qk4yWD65RAW?|vTJ7GD3G z^#$c6YLhx9P!uLZCmMxED$tZM#9^p|F<4-_-yRClP$AVD6SnpcwR!%$N9^7!-dkbx utT6iD!u}`EKZ7o2$Q%`LKkE8_Qt*FRVyJTl(Y-69rmJ->r<}*lAjAiUQ5t5ihNU~?L@7Z@D zOJsy3*&@tiK0iHw!1KMX@A=`J_kFJG+~>Yu=Y8Jybq+>fSC_~E0G4nI9cNEpL4E)L z%mEsJ;~D_8GXkd(0I;0yL8nJr8W4b^bH3}~OG|Ab0KoCC?_KTFt0_w|?EoYMT~}vh z2Rg~0Nr3@h?cTAr`+uSf>4QSKT4eeD2^Lbh%rAPrwYo)+*P4}?4#$!+lq6(^L}eQ? zje-DK7j^-r1tUF|%S_xLy3h|7IHnna#bm)PrF1-vU`BUR?hixJD&%>-^PHlzv~-|k z)Hh#onqUCIA{6}j3fRdZp1x&4f@^`ERu+77vIQ0lz@Awdk*@^jZr9+d+w$hNLO+;QUMHfQ&Fs0Qp1Pz^aaxK~M>lww(Wi@2i9 zyzQDYH>CH}S$8bUqb2f!>gA=LW8+eR6L6L8+t%Lr0oon6;x(s?nJ(LTRL7SCkr3b z=^1!vNpX`SNvd;uBQd+W>l#waxUysDy99@50jhx}tWb7yT1?K>z3x?0C9`K=;E5&1x!BHyfFl~@|Pby4vIW+EH2D+ z&Un*}fREQ~>^xGvn3G7Jh}W2Fsx~YVg%(o{6uA*U$yMNUgcFC6yFI?MB=n|VvJ9`; zjE|W64L7jYs$bIBnrRXIb!e|OiOV{^LU2y~tr?a^D_98lHfG=V3z?YO{7;tX_h|C- zhvaF?226LQSfhA^&i$8_!X>(znp*Px`GXZfKV>^p_&=#us@6F_jgrh`df?=(l4gd= zmFx{5Os23G{YfU4pf)j)uf-{OC1M}{&4at#q4&uWJUxUbe`z-*cS0RGmhbR5nn=;=|R-`l;h>T{y?_Lbwi;`Ei7wgQwk637<|+B zuyx%Wty%9L5n0~Lx{|NXNAcKz=?AF>77&pAvY&iA;XTSC9CPf6iNI@?6N0UqTfiLm zqLQs)pK?(wN`b5Rt|P@R@2u8JqZCiCI43cr8i_J2!rxKn>~oX8M4eA@s!Fb=4M4-f z(PiKIi{vsvoaId=;S5SRzkDQTPz5wrh_Vbrs;EzVzqcH7EaIYTN6QXmWQIK1QVsCM zTxJiYOG0fIu2T*-wUob%@>264oIBL{t1n#7!z%x&KKuM`F*Iu1uohF>IPpC*F2=6; z%|-EbS>9h*V=)5jJ5N{3@XNvA3(@gG(o?SPL6XMzrhQ4_CX^=z504-3X1KpbEf#^e z5;%d|3J^tT>HMs77>p*EY7hVgktY9GB^?dzW}GOG5;w2pOlS#N;kq9vgH5_;IDLeMYVBrDA=T*LX zppA{Kr};XsrH_CN%7Bk*kjD+WKLUp7_Q6J_92#!!I@dkCXOcs_mS^X2eQ4(`?E@2Q z%<^?w^OLj-5?{B!^-9Fu7~ZeD;gUU#E& zK3OxHRRl_b6(V5V3FXU}pzsXC=0flSizqAe&xRem1?K)cb0;&UZ0(h+1BTy@C*_%P zmfg@69VJwQJf72cjy44KC9Q7%XAjSXd(xhU$Z}RT*3q-^CZCRRoJfX`oHGb#@icek z)%pB~XLEo1y7C>m9<13!iP0pt0uuQbl9OMmIuqdRtXe!8rPAxuBhLe~JWBF%pE`!?ikoP$Yf38qKo=MHX+pOz1rSe%6@@zJ}sAr`fg zSyhFl8nkk^u8~<>b&uXMd523foQ2$9BD{Rv(u>y5XQ7pc&;@({W5UI(4)-M*De=l7 zEKV@hM08-XRP{%(w^<;JW}g0ly0)ViQllL5WUpR#eL&rdb0?c?B^L6 zP%;ZYrl;NK)a16$pDj=cXQ1LszPoe?tW@-ppH-Rq2Decydim9Kiz zfaI}iKf>fZlBj|)s}IE*oQz%HCf0OSO6@#-;Qsi|Ggq~cZpP_=>LM+(EIsj~0%{&~ z3Ls9Vi8t5@YgxThXXw-#T(RHA0vSrjw!54rS0(E@hQb>++qw}EKj2=1$)MLX`L>DY zw>*~<)^p8XoC6=MEpBc`ryd1%b*v*dQ!gkmSZfaIPOO(5tPKB2aO3oqbX~0xF9@O( zTkEH&E9HJHw!{?GNu@5+o9~(q)z?gfKSLMfns^#E1UaepDtbgqIs{fPL#wY)4L{NI0-{iS3p-c10g*IW7%Y)n4i`ci^K~;VlQEv`*yK$Ox%h`Jk_8}5cG3u z@dlWnfo6Xm+BWbYz=Ghmik;O|>*)SGQuaf~DLXl*xxb@1z^*)m-B5TP1O@Pz&(kDcZy z@y_*fx}y@t#_*4BDV?CNqhvDnwQZtc5_7)Txk^fH2d-3GlPjN~D$ib#W-%bD`uq+( z%{dJ7j&{N$%298XE%n3P-GEzQA#jK-OZSME;!$iW0yLY7TXLTN+V7$kULC zC>oXUjI^~qp4qU)Wh>ez@M+4b?XBi)nJSVMEdICuiGbaYk#ds zI<;Hv^U8p=i{8^TbZ=l!C3KHC&9`JZ4I3Qvy`#> zOUel*on?R&;p-?jcXb$lysKkDtSL^IFDv_EWLw!xW`{-h8Y{Lv;mc2e!u#1Aq{Ui6T`fu6SGklU9N+A-n)5_ykey)ji(yS@rsk0{dQ6^e!gOw|`vL%@ z1?DjYtqNqCosj3b;jwF}*M5mlL}lX@-1&h=HaL2=Dw$!|aejY1fm9Qtvp11|*$aBo z7;af9brX9uoi>(b#T{48WM*I-g*B!cbo1k;Gk}(ej`%QRo3qcZRF5o@uIHV>*Eg2- zHtk$B#10CIRM?lcc)sn)rc!6Mec3+9}>{wROgJf@SofiZr z3q7=SwuoS3eRl0k)_Mg`SyhP;)nJy#E#TFjzwY=(Lr8AlOpC!5d6+UQU-q#{>P;lp zpYG}#Acf;SNUzya%9M+xo(=@JyNc6)DRkj7GR;TFIOb+dKen|Dan(-j0}@QOsy;vG zt&KkVM#y)oxrO&D>qp5QpVl3j_MS`PK~I3Tvo>w8k;sqYjMtNJaFm&<(1Q){91(Fw zgHC8qGNamhG`~1qoWId0;V + +Test Sound + topmargin=0 leftmargin=0 +rightmargin=0 marginwidth=0 marginheight=0> +
+ +
+ +Loading the sound...

+
+ +
+
+ -- 2.25.1