Admin/pmail
author kleing
Sun, 18 May 2003 15:15:13 +0200
changeset 14034 55ba81e3502b
parent 13321 70a5d5fc081a
child 14036 fb6040d4bbf8
permissions -rwxr-xr-x
support text file attachments

#!/usr/bin/env bash
#
# $Id$
# Author: Gerwin Klein, TU Muenchen
# License: GPL (GNU GENERAL PUBLIC LICENSE)
#
# DESCRIPTION: send email with text attachments.
# (works for "mail" command of SunOS 5.8)
#

PRG="$(basename "$0")"

MIME_BOUNDARY="==PM_=_37427935"

function usage()
{
  echo
  echo "Usage: $PRG subject recipient <body> [<attachments>]"
  echo
  echo "  Send email with text attachments. <body> is a file."
  echo
  exit 1
}

function fail()
{
  echo "$1" >&2
  exit 2
}

#
# print_attachment <file>
#
# print mime "encoded" <file> to stdout (text/plain, 8bit)
#
function print_attachment()
{
    local FILE=$1
    local NAME=${FILE##*/}

    cat <<EOF
$MIME_BOUNDARY
Content-Type: text/plain
Content-Transfer-Encoding: 8bit
Content-Disposition: attachment; filename="$NAME"

EOF
    cat $FILE
}


#
# print_body subject <message-file> [<attachments>]
#
# prints mime "encoded" message with text attachments to stdout
#
function print_body()
{
    local SUBJECT=$1
    local BODY=$2
    shift 2

    cat <<EOF
Subject: $SUBJECT
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="$MIME_BOUNDARY"

$MIME_BOUNDARY
Content-Type: text/plain
Content-Transfer-Encoding: 8bit

EOF
    cat $BODY

    for a in $@; do print_attachment $a; done

    echo "$MIME_BOUNDARY"
}

## main

# argument checking

[ "$1" = "-?" ] && usage
[ "$#" -lt "3" ] && usage

SUBJECT="$1"
TO="$2"
BODY="$3"

shift 3

[ -r "$BODY" ] || fail "could not read $BODY"

print_body "$SUBJECT" "$BODY" $@ | mail -t "$TO"