1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892
|
NOTE: This program is still in beta testing mode, so please read the
file BETANOTES
TkMail v4.0 -- A Tk/Tcl interface to Mail
by Paul Raines (raines@slac.stanford.edu)
TkMail is an X windows interface to mail built using Tk/Tcl and
Perl. Reading, sending, and managing mail messages can almost all
be done using only the mouse (except for the body of the message,
of course). TkMail supports folders in the standard BSD Mail
format and MMDF format. It also uses 'sendmail' commands to do the
mail delivery work.
Major Features:
- listbox interface to messages for easy click and read
- multiple viewers can be opened on different or the same folder
- dynamic (at startup) menus for quick access to mail folders
for reading, copying, and moving messages
- button bar for quick composing, replying to, and forwarding of
mail messages
- built in 'biff' icon for notification of new mail
on multiple folders
- easy inclusion of files into message compositions with
automatic uuencoding and compression, if desired
- access alternate editor for compositions to send
- spell check compositions using a X windows interface
(must have the ispell program version 3.0.09, not 4.0!)
- reads aliases from either standard .mailrc or elm aliases.txt
- easy piping of message text through unix filters
- emacs-like key-bindings for text editing
- emacs-like autosave
- sorting of messages on any field and the ability to
write out the folder physically in that order
- simple MIME reading and compostion tools
There are aspects of mail handling which are still not standard
across all platforms or even versions of operatings systems. Also,
there is no guarantee that it is bug free, so don't trust TkMail
without at least running it through a few tests yourself! Make a
backup copy of your ~/mbox file and some of your folders and then
test out TkMail's operations on those files.
See the USER SETTINGS section below to get a real feel for
what TkMail can do.
GENERAL USAGE:
From your unix command line, type
tkmail [options] [folder]
Options are from among:
-debug Run program in debug mode.
-display DISPLAY Run program on X server DISPLAY.
-global FILE Use FILE for global settings file.
-? Prints this message.
-iconic Startup program in iconic mode.
-library DIRECTORY Use DIRECTORY as location of tkmail library files.
-personal FILE Use FILE for user settings file
If you do not specify a folder, your ~/mbox will be used.
Most things in the menu should be self evident (yeah...that is
what they always say). A few menu items are also on the button
bar. Many menu items can be accessed with accelerator characters
using the Alt key or Alt-Shift keys. Also F10 will let you do
keyboard traversal of the menu.
If a ~/.tkmail4rc or ~/tk/tkmail4rc file exists, they are sourced
so that the individual user can change the User Settings
described below. This resource file name can be overridden with
the -p option. This file provides the ability to do powerful
customization to TkMail for the knowledgable Tcl/Tk programmer.
One can define a procedure called mfv:compose-hook in these files
that will be evaluated each time a compose message window is
created. Another procedure called mfv:viewer-hook can be defined
which will be evaluated after a folder viewer is built. See the
included example.tkmail4rc.
The viewed message will always have the '>' character in front of
it. The Delete, Copy, Move, Save, and Print commands operate on
all selected messages. The Reply and Forward operate on only the
currently viewed one.
For efficiency and undo ability, deletes are not done immediately.
Deletes are processed when changing folders or quitting. This means
that if the something kills TkMail, any impending deletes are not
done. This most often happens when someone quits their window
manager without first quiting TkMail. TkMail doesn't always trap
this situation correctly on some systems.
An autosave file is periodically written out to a filename formed
by enclosing the folder name in #'s. This can be used to recover
lost deletes and such. For compositions, the autosave file is
named "letter.mfc#" where # is replaced by the number of the
compose window.
For most mail operations, a check is made to make sure that the
current folder has not been externally modified. This often happens
when someone runs two TkMail's or TkMail and a separate Mail session.
TkMail does check for new mail being appended to an open folder and
should handle it correctly.
ALIASES:
TkMail can parse either BSD or elm aliases files at startup. Which
one is used depends on the settings of the mf(mail-alias-file) and
mf(mail-alias-type) variables. To use aliases in your ~/.mailrc
file, put the following in your ~/.tkmail4rc file
set mf(mail-alias-file) $env(HOME)/.mailrc
set mf(mail-alias-type) bsd
To use aliases in the elm alias file ~/.elm/aliases.text, put
the following in your ~/.tkmail4rc file
set mf(mail-alias-file) $env(HOME)/.elm/aliases.text
set mf(mail-alias-type) elm
The mf(mail-alias-file) settings can be a list of files, so one
can add the global elm alias file to it.
Alias resolution is recursive, so aliases may contain other aliases.
Whether aliases are treated case sensitively is controlled by the
mf(mail-alias-case) settings.
If you wish to have a default machine address appended to addresses
that do not include one, use the mf(compose-addr-postfix) settings.
For example, the following would append @slac.stanford.edu to addresses
without a @machine part
set mf(compose-addr-postfix) {@slac.stanford.edu}
This is done after alias expansion so only true mail addresses will
get appended.
NOTE: sendmail will not send the mail to any of the users
listed if any one of them is not valid.
MOUSE BINDINGS:
Mouse bindings in the header list box are the standard Tk4.0
listbox extended mode bindings.
B1 Click - view clicked message and make it the sole selection
B1 Drag - select additional messages for later possible operations.
Shift B1 - extend selection
Control B1 - toggle selection
B2 Drag - do quick scan (scrolling) of list
B3 Click - view clicked message leaving other selections alone.
Mouse bindings in the message and compose window are normal Text
bindings. B2 will insert the current selection and B3 will
select text without moving the insertion cursor. Meta-Shift-B2
will insert the current selection with the mail prefix. See the
Tk 'text' man page for more info.
Using B3 on the Reply button will cause the message to be
automatically included in the compose text. Using B3 on the Compose
button will do the same but leave the To: field blank (for
Forwarding with editing). B2 on these buttons does the operation as
B3 except that no prefixing of including text is done. This can be
used to "bounce" mail.
Using B1 on the Split button will split the message window into
two panes, both with the current message. When a different
message is selected, only the top pane will change. If the
window is already split when the Split button is pressed, the
current message will be copied to the lower pane. Pressing B1 on
the Split button again will remove the lower pane (Unsplit).
Using B2 on the Split button will detach the current message into
its own independent window.
In the compose window, B2 on the 'Insert Message' button will insert
the message without prefix. B3 on the 'Send' button will send the
message without removing the compose window allowing you to readdress
and send the same message elsewhere.
KEY BINDINGS:
When in a folder viewer window and the summary listbox has the
focus, the following bindings are set:
n Next message
p Previous message
o Open another folder
x Save (expunge deletes) folder
q Quit
i Incorporate new mail
d Delete message
u Undelete message
s Save message
| Pipe message to unix command
c Compose new message
r Reply to sender of message
R Reply to sender and other receipents of message
f Forward message
y Print message
h Help
The normal movement keys Up, Down, PageUp, and PageDown move the
selection without viewing the message. Press Return or Space to
view the selected message.
Binding options for text widgets are controlled by variables set
in the ~/.tkbindrc file as part of the tkTextExtended package.
Most menu item can be accessed through keystrokes by using the
Control key along with the letter in brackets next to the item. For
emacs binding users (see below), a Control-c followed by the letter
is needed. This prefix key can be changed using the mf(menu-key)
setting. Pressing F10 will let you traverse the complete menu with
the arrow keys. See the example.tkmail4rc file to on how to set your
own key settings.
Non-emacs users have the following key bindings:
Text and Entry Widgets
Control-x Cut
Control-c Copy
Control-v Paste
Control-<number> Set repeat for next non-number key
Text Only
Control-z Undo
Control-a Select All
Control-f Search
Control-g Search Again
Control-. Set Fill Column
Control-j Format Paragraph
Control-V Paste with Prefix
Shift-<movement key> Selection
Control-Home goes to top of text, Control-End to the
end. Control-Left and Control-Right move by words. Home goes to the
beginning of the line and End goes to the end. PageUp, PageDown,
and the arrow keys do their obvious operations.
For an example of how to make you own bindings, see the example
~/.tkbindrc and ~/.tkmail4rc files. A procedure named
mfv:bind-hook can be defined in ~/.tkmail4rc that contains ones
personal bindings that you wish only to be in place in TkMail and
no other apps that use the tkTextExtended package. This procedure
will be run if it exists after tkmail has finished settings its
default bindings.
EMACS KEY BINDINGS:
Binding options are controlled by variables set in the ~/.tkbindrc
file as part of the tkTextExtended package.
Set the tkBind(emacs) variable to '1' to get the typical emacs
bindings for Control a,e,f,b,n,p,o,d,k,w,y and space. Also, the
Escape key as a prefix or the Meta key as a modifier for f,b,d,w,q,
y, [, ], and \. A limited undo is bound to Control
underscore. Since undo is very memory intensive, the setting
btp(undo-level) will control the number of steps saved.
Since the Escape key is used as a prefix key, a Control-Escape must
be used to cancel dialogs.
Control-Shift-S will pop up a window to enter a string for searching
in the current Text widget. Control-s will search again. Regular
expression and backward search is supported.
Arguments are supported along with Control u for univeral argument.
The kill ring contains a maxium of 10 deletions. If a region of
the text is selected with the mouse, Control-w will cut it and
Meta-w will copy it onto the kill-ring. Control-y will paste it and
Control-Y will paste prefixed by the value of the mf(insert-prefix)
setting.
Very primitive auto-wrapping is supported with the emacs bindings.
Once you are at the column where you wish the text to wrap, type
"Control-x f". To return to no wrapping, do a "Control-x f" when
the cursor is in column zero. Setting for one text widget will set
it for all text widgets. If you want wrapping always set to a
certain column, put a line like the following in your ~/.tkbindrc
file
set tkBind(fillCol) 65
Doing an Escape-q will try to auto-format the current paragraph.
Note, if your keyboard has Alt keys rather than meta keys, you
will most likely have to put the line
set tkBind(meta) Alt
in your ~/.tkbindrc file. This might cause conflicts with the
menu access accelerators. I am trying to work this out.
ATTENTION FOREIGN KEYBOARD USERS! If wish to have only the Escape
bindings, you can put the following line in your ~/.tkbindrc file
set tkBind(meta) {}
to prevent bindings with the Meta key for emacs functions. This
might be necessary for non-English keyboards to access special
characters.
VIEWER MENU:
Folder: Open... Select new folder to view
Save Save current folder (processes deletes)
Save Sorted Save current folder in viewed order
Close Close folder view
Quit Quit TkMail
Main Box View main mail box (usually system inbox)
Force Autosave Forces an autosave to the #folder# file
Rebuild Menu Rebuilds dynamic folder menus
Reread Alias Reread your alias file
Recent A menu of recently accessed folders to view
<Folders> List of folders in folder directory to open
Directories will become pull right menus
++chopped++ If presents, signals that there where more
folders present that could not be put in menu
Edit: Cut Cut selection into private buffer
Copy Copy selection into private buffer
Paste Paste private buffer at insert mark
Select All Select the whole text buffer
Search... Search the message for a string
Search Again Repeat last search command
Save X Sel Select file to current X selection to
Print X Sel Select printer command to print X selection to
Eval TCL X Sel Evaluate the current X selection as Tcl
Pipe UNIX X Sel Pipe the current X selection through a UNIX cmd
and choose what to do with results
Mesg: Read Reread the current message into viewer
Copy => Show folders to copy selected messages to
Move => Show folders to move selected messages to
Delete Mark selected messages for deletion
Undelete Unmark selected messages for deletion
Select All Select all message in header list
Write Body ... Select file to save message body to
Print Select printer command to print messages with
Pipe Select UNIX command to pipe messages through
Show Full Head Show all headers (ignoring strip options)
Detach Copy current message to its own window
Split/Unsplit Split view and Copy current message to lower pane
Quick Decode Search mesg for uuencode enclosures,
and decode them
Alias Current Requests an alias for the current sender
Compose: New ... Popup window to compose new message
Reply ... Popup window to reply to current message
Reply All ... Reply to sender and recipients of message
Forward ... Forward selected messages to a user
Restore Last... Restore last composition window
TkMail Support. Mail a comment/bug report to author
<Names> List of addresses in mf(menu-quick-send)
View: Sort Normal Sort messages in physical file order
Sort From Addr Sort messages by address received from
Sort Full Name Sort messages by real name of sender if available
Sort Subject Sort messages by subjects
Sort Time Receiv Sort messages by the time they were received
Hide Deleted Hide deleted messages from summary list
Fixed-space Font Toggle use of fixed space font
Reverse Order Toggles display of messages in reverse order
Reverse Video Toggles display of messages in reverse video
Options: Edit Globa Set ... Pops up the settings editor
Edit Aliases ... Pops up a window to edit your alias file
Auto Incorp Toggle auto incorporation of mail
Popup Notice Toggle popping up of new mail notifier
Ask on Long Mesg Toggle requesting to continue on long messages
Strip Header Toggle stripping of headers on compose insert
Parse MIME: Toggle parsing of MIME messages
Help: <Sections> popup window displaying section from help.txt
Show Log popup window showing logging of actions
<Sender> MENU ITEM:
The <Sender> menu item is the third item (just under the Other...
item) int the Mesg:Copy and Mesg:Move menus. Selecting the item
will copy or move the message into a folder determined by the
mf(mail-archive-folder) setting. If it is set to a filename, then
the operation will be to that file. If it is a value which starts
with a '@' character, then the rest of the setting is interpreted
as a Tcl procedure and evaluated with the pathname of the viewer
passed as an argument. The value returned is the filename to use
for <Sender> operations.
The default value for the mf(mail-archive-folder) setting is
{@mfv:sender-default-hook 1} which will return the sender's email
address as the archive filename. By default, the it only uses the
part of the address before the '@'. The whole address will be
used if 1 is set to a 0 in after @mfv:sender-default-hook. Also,
all letters of the resulting string are convert to lowercase.
See the example ~/.tkmail4rc file in the TkMail distribution for an
example of a personalized mf(mail-archive-folder) settings.
COMPOSE MENU:
File: Insert File... Select a file to insert into composition
- can encode, compress, and prefix
Insert Mesg... Select messages to insert into composition
MIME Attach... Prompt of a MIME attachment to message
Send Mail the composition
Cancel Kill the window and don't send
Alt Editor Bring up alternate editor
Edit: Cut Cut selection into private buffer
Copy Copy selection into private buffer
Paste Paste private buffer at insert mark
Search... Do a string search in text
Search Again Repeat last search
Expand Aliases Do alias expansion on contents of entry widgets
Ispell Run tkispell on composition
Eval TCL Sel Evaluate the current X selection as Tcl
Pipe UNIX Sel Pipe the current X selection through a UNIX cmd
and choose what to do with results
Options:
Show Cc/Bcc Toggle on/off the Cc/Bcc entries
Show Fcc Toggle on/off the Fcc entry
Fixed Space Toggle showing text in fixed space font
Reverse Video Toggle showing text in reverse video
When you run the alternate editor, the Alternate Editor button on the
bottom of the screen will change to say Finished AltEdit. If the
send command does not work because of xauth security, you must press
this button to get the changes from the alternate editor.
PRINTING AND PIPING:
Note that there are two Print menu items. One prints the current X
selection and the other prints the currently selected mail
messages. Both prompt the user for a unix print command (this can
be turned off after the first prompting). In this command line, the
following printf style substitutions will be made (evaluated in
this order):
%F the name of the temporary file for printing. If
it is ommitted, the name fo the temporary file
will be appended to the end of the command line.
%D The send date of the currently selected message.
%W The sender (From) of the currently selected message.
%S The subject of the currently selected message.
The given command is passed to the Bourne shell. In order to account
for sh-style parsing of whitespace, you must surround the complete
token where %S, %W and %D are used with double quotes (not single
quotes). For example:
enscript -b"Subject: %S" -plw2 %F
The placeholders %D, %W, and %S will have any double quotes and
dollar signs in them escaped with backslashes before being substituted
into the command.
The printf-sytle placeholders will also work for the pipe commands.
For piping, you will be able to choose whether TkMail should discard
the output from the pipe, use it to replace piped in contents of the
affected text widget, or appended it to the affected text widget. One
may also have the pipe take place in an xterm in which case you will
have the ability to run interactive commands. In this case, if a file
named %F.out is generated, its contents will be used to replace the
text filtered through the pipe command. For example:
pgp -sta %F; mv %F.asc %F.out
HEADER FIELD STRIPPING:
The mf(header-retain) settings can be set to a list of fields which
will be the only ones shown in the viewer if available. The
mf(header-strip) settings can be set to a list of fields which will
be stripped from those available before showing. If mf(header-retain)
is used, there is no reason to use mf(header-strip).
SUMMARY LISTBOX FORMAT:
Them mf(headlist-format) setting is a printf style string with
the following placehoders (taken from VM for emacs).
c - number of characters in message (ignoring headers)
d - numeric day of month message received
D - full date string
f - author's address
F - author's full name (same as f if full name not found)
h - hour message received
i - message ID
l - number of lines in message (ignoring headers)
m - month message received
s - message subject
w - day of the week message received
y - year message received
Use "%%" to get a single "%".
CC:, BCC: and FCC:
The mf(compose-show-cc) variable controls whether two extra entry
boxes appear in the compose window when the compose window is
first mapped. If the entry boxes are shown in the compose window
when the message is sent, then they will be used if non-blank.
If they are not shown, what ever was put in them before will be
ignored.
When Reply All is choosen for a message and the To: field in a
Reply message appears to have multiple addresses, all of the
addresses (including yours) will be added to the Cc: list. Also,
the original messages Cc: list if present will be copied to the
Cc: entry.
The button on the right side of the entry widgets can be used to
popup a text window for easier editing of long address lists. Any
newline characters inserted into the text widget will be replaced
with spaces. You must click the Accept button on the text window
before sending for your changes to be used.
The mf(compose-alternates) variable can be used to prevent mail
from being sent to any address in the Cc: listing. It is a list in
which the elements must be an exact match or regular expression
(e.g. raines[a-zA-Z@\.]* ) of the address to ignore. Be careful
that the regular expression excludes spaces and commas to prevent
mangling of two or more addresses.
The FCC: entry contains the name of the file to which a copy of the
message will be recorded. This is always set to the value of
mf(compose-fcc-folder) when first mapped, but can be changed.
Whether this file is used or not depends on whether the Fcc: entry
is shown or not at send time. Multiple files can be specified if
separated by commas. The button at the side of the entry widget
will popup a file selection box.
If one sets mf(compose-fcc-folder) to a value that begins with a
'@' character, then the rest of the setting is taken as a Tcl
command which will be evaluted with the pathname of the compose
window toplevel appended. The return value is then used as the Fcc:
folder. See the example ~/.tkmail4rc file.
The Fcc: entry will be calculated when the compose window is first
mapped and whenever the To: field is edited and then loses focus.
It WILL NOT be calculated on send, so what you see at send time is
what you get. Well, not exactly true since if the focus was in the
To: entry at the time you selected Send, then that qualifies as a
loss of focus and the Fcc is recalculated.
The button on the side of the Subject entry widget has no command
associated with it and is only there for symmetry. If anyone has a
good idea about what this button should do, drop me a line. Using
mouse button 3 on an entry's button will clear that entry.
SIGNATURE:
The mf(insert-signature) settings points to the file to be inserted
at the end of each compostion before being sent. The button "Sign"
on the compose button bar allows one to sign the message before it
sent to one may verify the text inserted and change it if they
wish. The mf(insert-auto-sign) setting can be set to true so that
the signature file will be automatically inserted when the compose
window is first popped up. If you wish to have not signature, just
set mf(insert-signature) to the empty string.
If mf(insert-signature) starts with the '@' character, the rest of
it will be interpreted as a Tcl command which will be evaluted each
composition with the compose window pathname passed as an
argument. The return value will be taken as the file to insert as
the signature. This can be useful in using different signatures for
local and remote sends. See the example ~/.tkmail4rc file for how to
do this.
The mf(insert-prefix-sig) settings is a character string that will
be inserted write before the text included from the signature file.
The unofficial standard for this seems to be two dashes and a
newline which is the default. If the compose window has any MIME
attachments, then the mf(insert-prefix-sig) is ignored and the
signature is inserted in its own text/plain part at the end of the
composition.
MIME:
SORRY: TkMail 4.0 doesn't do MIME yet so ignore below.
TkMail can handle reading most of the standard MIME types outlined in RFC
1521. The exceptions are the message/external-body types that require an
outside network connection (eg. ftp). The text/plain and text/enriched
types are displayed internally in TkMail, while others will require an
external viewer. These can be configured with the
mf(mime-external-viewers) setting. For example,
set mf(mime-external-viewers) {
{Image xv} \
{Text/HTML Mosaic} \
{Audio {cat %F > /dev/audio}} \
{Application/PostScript ghostview} }
Since mime parsing can be time intensive, it can be toggled on and off
with the mf(mime-parse) setting. Mime parsing will make extensive use
of temporary files in your mf(mail-tmpdir) directory. If TkMail is killed
ungracefully, you may want to look there to clean up some files yourself.
In the compose window, MIME compositions are supported through the Attach
Mime item in the File menu. This will build the MIME message in source
form in the compose window, though some file inclusions may be delayed
until send time. If mf(mime-compose) is on and one does a Forward operation,
the forwarded message will be included as message/rfc822 subpart. Using
the "Insert Message" button will also attach the target message as a
message/rfc822 subpart. Doing an "Insert File" will still only insert the
contents of the file verbatim in the compose window. Use the Attach Mime
menu item for real file attachments.
The mf(mime-font-default) and mf(mime-font-fixed) settings specify
the font to use for displaying MIME text. However, if the content-type
is simple text/plain without any further qualification, the regular
mf(disp-font-default) or mf(disp-font-fixed) settings are used.
MIME handling is still very experimental in TkMail. If you have
metamail installed at your site, you may wish to simply pipe a MIME
message to it. The included example.tkmail4rc file shows how a menu
item can be set up to make this easy to do.
USER SETTINGS:
Below are settings you may want to customize in the ~/.tkmail4rc file.
The contents of this file are sourced by TkMail as normal Tcl code.
Settings that were most likely set to the proper defaults during
installation are marked with an (*). These should only be set by
the knowledgable individual user.
TkMail uses the array mf() to store all its "known" settings. If
your customization requires you make your own global settings, you
should use the mfuser() array to store them. This will allow you
to edit them in the TkMail Option Editor using the "User" category
and TkMail will store them alongside the mf() settings in your
~/.tkmail4rc file.
If you want the Option Save command to be able to overwrite mf()
and mfuser() settings in your ~/.tkmail4rc file, put them between two
comment lines as in the following:
# USER SETTINGS
set mf(variables) here
set mfuser(variables) here
# END OF USER SETTINGS
TkMail will overwrite anything except comments that appear between
these two comment lines. DO NOT put btp() settings or procedure
definitions between them.
* mf(mail-mbox) - default folder to open if none is given on
command line (default is system inbox)
* mf(mail-deliver) - mail delivery command
* mf(mail-system) - system inbox where mail is received
* mf(mail-tmpdir) - temporary file directory to use
mf(mail-interval) - number of milliseconds between mail checks
mf(mail-directory) - directory containing mail folders
( hidden files will be ignored )
( should match corresponding .mailrc value)
mf(mail-auto-incorp) - whether to incorporate new mail automatically
( see GENERAL USAGE above for details )
mf(mail-flush) - number of bytes between flushes to I/O
( needed to handle large messages > 15000 bytes )
mf(mail-read-ask) - whether TkMail should ask to continue
when reading in large messages
mf(mail-read-max) - maximum number of lines to read before asking (when
mf(mail-read-ask) is true)
mf(mail-alias-file) - list of files containing alias definitions
mf(mail-alias-type) - format of alias files: bsd or elm
mf(mail-archive-folder) - default archive file (see <Sender> above)
mf(disp-left-scroll) - set to 1 for scroll bar on left side of text widget
mf(disp-font-default) - font to use for normal text display
mf(disp-font-fixed) - font to use for normal fixed text display
* mf(viewer-bitmap-nomail) - bitmap to use to signal no mail
* mf(viewer-bitmap-mail) - bitmap to use to signal mail
mf(viewer-print) - UNIX commmand for printing (with %F subst for file)
mf(viewer-geom) - initial geometry for main mail window
mf(viewer-beep-new) - Tcl command to run when mail received
( set to {} for no beep )
mf(viewer-beep-empty) - Tcl command to run when system mail is emptied
mf(viewer-beep-error) - Tcl beep command to run on error or notification
mf(viewer-state) - 'normal' or 'disabled' to allow mesg window editing
mf(viewer-pipe-dir) - directory to run piped UNIX commands
mf(menu-folders-max) - maximum number of folders displayed in menu
at one level
mf(menu-depth-max) - maximum depth of pull-right menus
mf(menu-quick-send) - list of common addresses for composing mail
( can include aliases )
mf(menu-folders-ignore) - files to ignore in mf(mail-directory) directory when adding
to menus at startup. These can be shell glob patterns.
A subdirectory path relative to mf(mail-directory) is
required.
mf(menu-recent-max) - maximum number of folders to keep track off in the
Recent menus
mf(headlist-reverse) - set to 1 so that most recent message at top
mf(headlist-sort) - header field to sort on (i.e. subject, sm-from)
mf(headlist-height) - number of messages visible in top list at one time
mf(headlist-format) - see SUMMARY LISTBOX FORMAT above
mf(headlist-deleted-hide)
- whether default is to hide deleted messages or not
mf(headlist-deleted-config)
- text tag configuration to apply to summary line for
deleted messages
mf(compose-geom) - initial geometry of compose window
mf(compose-show-cc) - whether to show Cc and Bcc entries in compose
mf(compose-save-send) - whether to save text of last compose window
mf(compose-alt-editor) - command to run alternate editor for compositions
( must be an X-window command )
mf(compose-alt-auto) - whether to automatically call up alternate editor
mf(compose-alternates) - list of email address that you want stripped
stripped from Cc: since they are yours
* mf(compose-icon-bitmap) - bitmap to use for compose window
mf(compose-addr-postfix) - a string of form @machine to add to addresses
that lack it
mf(compose-require-subject) - whether a subject should be required
or not on outgoing messages
mf(compose-from-field) - Text to include on From: line
mf(compose-fcc-folder) - file to record outgoing messages in ( use {} for none )
mf(compose-fcc-swap) - whether or not when recording outgoing messages
to record them as being "sent" by the addressee
mf(compose-fcc-forward) - whether or not to record forwarded messages
mf(header-retain) - see HEADER FIELD STRIPPING above
mf(header-strip) - see HEADER FIELD STRIPPING above
( use this cautiously as it can delete body )
mf(header-config) - a text tag config argument to apply to the header
lines of a mail message
mf(bind-alt-key) - Key to press in order to access menu accelarators
mf(insert-prefix) - prefix for included messages
mf(insert-headers) - text to automatically put at top of all compositions
mf(insert-signature) - file to include at end of compostions (use {} for none)
mf(insert-auto-sign) - whether to automatically include signature file
when the compose window is first popped up
mf(insert-encoder) - program to use for encoding inserted files
mf(insert-compress) - program to use for compressing inserted files
mf(insert-compress-suffix) - suffix used by compress program
mf(insert-strip) - whether or not the header of inserted messages should
be completely stripped
mf(insert-prefix-sig) - text to insert before contents of signature file
mf(insert-cite-format) - Format for citing at top of included messages
mf(insert-forward-format) - Format of line put at top of forwarded messages
* mf(ispell-present) - whether your site has ispell or not
mf(mime-parse) - Whether to do MIME parsing in reading messages
mf(mime-compose) - Whether in compose inclusion of current message
should be done as MIME rfc822 attachment
mf(mime-external-default) - Default command to run on mime parts
mf(mime-external-viewers) - List of content-type / program pairs
mf(mime-font-default) - Font as {foundry family fntsize} for
deriving fonts for mime
mf(mime-font-fixed) - Font as {foundry family fntsize} for
deriving fixed fonts for mime
An example line in the ~/.tkmail4rc file is shown below (note that
you must use $env(HOME) instead of ~ for your home directory).
Tcl does not do automatic globbing!
set mf(mail-directory) $env(HOME)/Mail
The site adminstrator only has to modify the mfp(globalset)
variable at the top of the tkmail source file and can put the
rest of the settings in the pointed to file.
WIDGET CONFIGURATION:
All widget configuration options (colors, non-MIME fonts, ...) can be
set in the normal Tk way. See the 'options' and individual widget man
pages for more info. The main viewer window has resource class MailView
and the compose window has resource class MailCompose. Use the 'xprop'
utility to find the class of other windows. A few examples of lines that
can be placed in your ~/.tkmail4rc file are
option add *Button.foreground blue
option add *Text.font fixed
option add *Scrollbar.background grey42
option add *MailView*Text.background seashell2
option add *MailCompose*Text.background thistle
Note that there is no colon used with this command. Also, the font of
the viewer and compose text display cannot be set this way. You must use
the mf(disp-font-default) and mf(disp-font-fixed) settings for
that. Setting the font resource *MailView*Text.font will only effect
the summary listbox.
USEFUL METHODS:
Here are a few methods one might find useful in the various hooks
possible in the ~/.tkmail4rc file.
mfv:xterm-command $mft $cmd
Will popup an xterm in which the current message in the viewer $mft
will be piped through the unix shell command $cmd. Before exiting,
the user will be asked to press return. This can be used for either
the MailView or MailCompose window. If the command generates an
output file with the same name as the temp file with .out appended
(use %F.out), the contents of that file will be used to replace the
contents of the message in the affected text widget. This is most
useful in the MailCompose window. See PRINTING AND PIPING above for
available placeholders.
mfv:reset-fcc $mfc
Recalculates the FCC entry in the compose window $mfc. Should be
called at the end of any routine which changes the contents of a
compose window's entries.
mfv:viewer-get-field $mft $fieldlist
Returns the content of the first header field in $fieldlist that
exists for the current message in the viewer $mft. Returns the
empty string if none of them exist.
mfv:compose-get-field $mfc $field
Returns the contents of the $field entry in the compose window
$mfc where $field may be to, subj, cc, bcc, or fcc.
mfv:extract-address $addrfieldstring $pos
Extracts the $pos'th e-mail address from the address field
$addrfieldstring (e.g. From:, To:, Cc:). Not very robust yet, so
I would appreciate being sent valid address fields it does not
work on so I can improve it.
mfv:strip-comment $fieldstring $keepq
Returns $fieldstring with comments and quoted strings stripped
from it. If $keepq is 1, then only comments are stripped.
mfv:mime-attach $mfc $type $subtype $params $enc $file $desc
Attach a mime subpart of $type/$subtype to the composition in
the compose window whose toplevel is $mfc. All other arguments
may be the empty string. If $file is given, the contents for the
subpart will be taken from the given file and encoded according
to $enc (default is no encoding) at send time. If $file is empty,
the insert cursor is placed at the right position for the user
to enter the contents manually.
FAQ:
Sorry. No FAQ yet for TkMail 4.0.
BUGS:
I am sure there are plenty of bugs in this beta, so mail me
about them (raines@slac.stanford.edu)
FUTURE:
Items on the list:
MIME
horizontal scrollbars
reworked search options
signal handling
option to have the old mbox model
a default detach message model
figure out a solution for long menus
make it easier to customize bindings
make it easier to customize button bar
convert this help file into a man page
some sort of MIME enriched text composition tool
support Sun Mailtool attachments
better PGP support
incoming mail filtering
handle unshar similar to uudecode
compressed folder support
a true bounce
mail response tracking
XFaces
COPYRIGHT:
Copyright 1994-1996 by Paul Raines (raines@slac.stanford.edu)
Permission to use, copy, modify, and distribute this software and
its documentation for any purpose and without fee is hereby
granted, provided that the above copyright notice appear in all
copies. The University of Pennsylvania makes no representations
about the suitability of this software for any purpose. It is
provided "as is" without express or implied warranty.
DISCLAIMER:
UNDER NO CIRCUMSTANCES WILL THE AUTHOR OF THIS SOFTWARE OR THE
UNIVERSITY OF PENNSYLVANIA, STANFORD UNIVERSITY, THE STANFORD
LINEAR ACCELERATOR CENTER, OR THE DEPARTMENT OF ENERGY BE HELD
RESPONSIBLE FOR ANY DIRECT OR INCIDENTAL DAMAGE ARISING FROM THE
USE OF THIS SOFTWARE AND ITS DOCUMENTATION. THE SOFTWARE HEREIN IS
PROVIDED "AS IS" WITH NO IMPLIED OBLIGATION TO PROVIDE SUPPORT,
UPDATES, OR MODIFICATIONS.
Please mail any suggestions, bugs, whines to raines@slac.stanford.edu
The latest version is always available by anonymous ftp at
ftp.slac.stanford.edu:software/TkMail/tkmail.tar.gz
If you have slac.stanford.edu mounted as an AFS volume at your site,
you can find it at /afs/slac.stanford.edu/public/sofware/TkMail.
|