#! /bin/ksh # # Author: Mike Fleming mike@tauzero.co.uk # # Mail a file to a named recipient # # mailfile [-t mailaddr] [-c mailaddr] [-s subject] filename [filename...] # # -t To address # -c Cc address (can be repeated) # -s Subject USAGE="mailfile [-t mailaddr] [-c mailaddr] [-s subject] filename [filename...] \n\n \t-t\tTo address\n \t-c\tCc address\n \t-s\tSubject\n" MULTIPLE=N CC="" while getopts :t:c:s: opt do case $opt in t) if ! valemail.pl $OPTARG then echo To: email address $OPTARG is not valid return 1 fi TO=$OPTARG;; c) if [[ "$CC" == "" ]] then CC=-c fi if ! valemail.pl $OPTARG then echo Cc: email address $1 is not valid return 1 fi CC=$CC $OPTARG;; s) SUBJECT="$OPTARG";; ?) echo "Unknown option $OPTARG" echo $USAGE return 1;; :) echo "Missing value for option $OPTARG" echo $USAGE return 1;; *) echo $USAGE return 1;; esac done shift $((OPTIND - 1)) # Validate as far as possible if [[ "$1" == "" ]] then read FILE?File: else FILE=$1 fi if [[ $# > 1 ]] then MULTIPLE=Y fi if [[ "$TO" == "" ]] then read TO?To: read CC?Cc: fi if [[ "$SUBJECT" == "" ]] then if [[ "$MULTIPLE" == "N" ]] then SUBJECT="$1" else read SUBJECT?Subject: fi fi # Allow shell expansion FN=$FILE if [[ $# > 0 ]] then shift 1 fi until [[ "$1" == "" ]] do FILE=$1 FN="$FN $FILE" shift 1 done for F in $FN do if [[ ! -f $F ]] then echo File $F does not exist return fi done if [[ "$SUBJECT" == "" ]] then SUBJECT="Emailing files" fi (for F in $FN; do uuencode $F $F; done) | mail -s "$SUBJECT" $CC $TO