#! /usr/local/bin/perl ##---------------------------------------------------------------------------## ## File: ## HtmlMail ## Author: ## Earl Hood ehood@convex.com ## Copyright (C) 1994, Wed Oct 26 14:56:26 CDT 1994 ## ## Description: ## HtmlMail is a simple Perl program that loads a single mail ## message from STDIN into a WWW client. Even though, this ## program can be used to with NCSA Mosaic, it is better to ## use MosaicMail since it tries to load the message in an ## existent Mosaic session. ## ## MHonArc is called to do the actual conversion of the e-mail ## message. Therefore, MIME messages will be converted, and ## text/plain messages will have URLs hyperlinked. ## ## Change the values in the CONFIG section below to suit your ## needs. ## ## Notes: ## o For MH users, the following can be used to process the current ## mail message: ## ## % show -noshowproc -noheader | HtmlMail ## ## o For Trn users, you can load a newsgroup post into a WWW client ## by piping the post to HtmlMail: ## ## | HtmlMail ## ## o MHonArc needs to be in your search path ## ## o If extra files are created by MHonArc (i.e. for graphics, ## binaries, etc), they will not get removed. You'll have ## to manually remove them. ## ##---------------------------------------------------------------------------## ## Copyright (C) 1995 Earl Hood, ehood@convex.com ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ##---------------------------------------------------------------------------## ##--------------------------------------------------------------------------- ############################################################################# ##--------------------------------------------------------------------------- ## CONFIG: Change the following variables to reflect your needs ## WWW client to invoke (client must be able to take a file://localhost/... ## URL for loading converted message). $WWWClient = "lynx -force_html"; ## Location of converted message; directory must exist and be a FULL ## pathname. $DESTDIR = "$ENV{'HOME'}/tmp"; ## Uncomment and set the following variable to a MHonArc resource file if ## you want to customize the format of the converted message #$ENV{'M2H_RCFILE'} = "mhonarc.rc"; ## CONFIG: End change section ##--------------------------------------------------------------------------- ############################################################################# ##--------------------------------------------------------------------------- ##--------------------------------------------------------------------------- ## Actual code to do the conversion (Should not have to edit) ## Set html filename $htmlfile = "$DESTDIR/" . time() . ".$$.html"; ## Set handler to clean up if program is interrupted $SIG{'ABRT'} = $SIG{'HUP'} = $SIG{'INT'} = $SIG{'QUIT'} = $SIG{'TERM'} = 'cleanup'; ## Set web client command $webcmd = "$WWWClient file://localhost$htmlfile"; ## Convert message to HTML by using MHonArc open(MHONARC, "|mhonarc -single -outdir $DESTDIR > $htmlfile"); print MHONARC ; close(MHONARC); ## Reset STDIN to terminal for text based WWW clients (Lynx goes wacko ## if this isn't done) close(STDIN); open(STDIN, "/dev/tty") || &error("Unable to open terminal: $!\n"); ## Call web client print STDOUT "$webcmd\n"; if ($ret = system($webcmd)) { &error("Error status from $WWWClient: ", $ret/256, "\n"); } &cleanup(); ##--------------------------------------------------------------------------- sub cleanup { unlink $htmlfile; exit 0; } ##--------------------------------------------------------------------------- sub error { warn @_; &cleanup(); }