#!/bin/sh 
#
# BlackMail v1.1
# (c) 1993 Ivo van der Wijk (irvdwijk@cs.vu.nl)
#
TMPMAILFILE=/tmp/BMsend.$$
MAILSERVER=`hostname`
MAILRCPT=''
MAILFROM=''
MAILSUBJECT=''
USECRYPT=''
USEDES=''
SIGFILE=''
SIGLEN=''
NOINTERACT=''

echo "BlackMail v1.1 (c) 1993 by Ivo van der Wijk (irvdwijk@cs.vu.nl)"

ShowHelp()
{
	echo "Syntax: `basename $0` [switch value(s)] recipient"
	echo
	echo "Available switches: "
	echo "-h, -help                         Show this help"
	echo "-r, -server servername            Use servername as mailserver"
	echo "-f, -from address                 Use address as from-field"
	echo "-s, -subject subject              Use subject as subject-field"
	echo "-i, -include file                 Include file as signature"
	echo -n "-"
	echo "n, -nointeract                   Don't ask questions"
	echo
}

GetEnvVar()
{
	while [ $# -gt 2 ]
	do
		echo "$1"
		shift
	done
	echo -n "$1 " 
	read $2
}

if [ $# -eq 0 -o "$1" = "-h" -o "$1" = "-help" ]
then
	ShowHelp
	exit
else
	while [ $# -gt 1 ]
	do
		case $1 in
			-h| -help)
				ShowHelp
				exit
			;;
			-r| -server)
				MAILSERVER=$2
				shift
			;;
			-f| -from)
				MAILFROM=$2
				shift
			;;
			-s| -subject)
				MAILSUBJECT=$2
				shift
			;;
			-i| -include)
				SIGFILE=$2
				shift
			;;
			-n| -nointeract)
				NOINTERACT=TRUE
			;;
			*)
				echo Unknow option $1
				exit
		esac
		shift
	done
fi								

MAILRCPT=$1

while [ ! "$MAILRCPT" ]
do
    GetEnvVar "No recipient specified" "Please enter e-mailaddress :" MAILRCPT
done

CORRECT="n"
if [ ! "$NOINTERACT" ]
then
	while [ "$CORRECT" = "n" ]
	do
		echo
		echo -n "Sending mail from: "
		if [ ! "$MAILFROM" ]
		then
			echo "<Not specified> (anonymous)"
		else
			echo $MAILFROM
		fi
		echo "Sending mail to  : $MAILRCPT"
		echo -n "Subject          : "
		if [ ! "$MAILSUBJECT" ]
		then
			echo "<none>"
		else
			echo $MAILSUBJECT
		fi
		echo "Using server     : $MAILSERVER"
		echo -n "Using signature  : "
		if [ $SIGFILE ]
		then
			if [ -f $SIGFILE ]
			then
				echo $SIGFILE
			else
				echo "$SIGFILE does not exist, using <none>"
				SIGFILE=''
			fi
		else
			echo '<none>'
		fi
		echo
		echo -n "Is this correct? (y/n/q) : "
		read CORRECT
		case $CORRECT in
			y| Y| yes| YES)
				echo "Great :)"
			;;
			n| N| no| NO)
				MAILRCPT=
				MAILSERVER=
				while [ ! "$MAILRCPT" ]
				do
					GetEnvVar "Enter recipientaddress:" MAILRCPT
				done
				while [ ! "$MAILSERVER" ]
				do
					GetEnvVar "Enter serveraddress  :" MAILSERVER	
				done
				GetEnvVar "Enter subject        :" MAILSUBJECT
				GetEnvVar "Enter fromaddress    :" MAILFROM
				GetEnvVar "Enter signaturefile  :" SIGFILE
			;;
			q| Q| quit| QUIT)
				echo "Chickening out, huh?"
				exit
			;;
		esac
	done
fi

{
	echo mail from:$MAILFROM			
	echo rcpt to:$MAILRCPT				
	echo data					
	echo "Date:      "`date '+%a, %d %h 19%y %H:%M:%S'`      
	echo "From:      $MAILFROM"                     
	echo "To:        $MAILRCPT"			
	echo "Subject:   $MAILSUBJECT"                  
	echo 
	echo 
	if [ $SIGFILE ]
	then
		echo '-' 
		cat $SIGFILE 
	fi
} >> $TMPMAILFILE
#
echo "+------------------------------------------------------+"
echo "| Now please enter all the nonsense you have to say... |"
echo "+------------------------------------------------------+"
#
vi +9 $TMPMAILFILE
if [ -z "$NOINTERACT" ]
then
	echo -n "Send or forget this mail? (s/f) : "
	read SENDACTION
	case $SENDACTION in
		s| S| send| send)
			echo "Great :)"
		;;
		f| F| forget| FORGET)
			echo "Too bad :("
			exit
		;;
		*)
			echo "Yeah, sure!"
			exit
		;;
	esac
fi
exec 2>/dev/null
{
	cat $TMPMAILFILE
	echo .                 
	echo quit              
} |
telnet $MAILSERVER 25 > /dev/null
exec 2>`tty`
#
echo "+-------+"
echo "| Done! |"
echo "+-------+"
rm $TMPMAILFILE
