Re: Send Email from command line

Pablo Sanchez <[email protected]>
Newsgroups gmane.comp.kde.users.pim
Organization Blueoak Database Engineering Inc
Message-ID <[email protected]>
[ Comments below, in-line ]


On Thu, 20 Oct 2016 10:24:41 +0200, Sascha Manns wrote:

> Hello List,
>
> some years ago i read about the possibility to compose an email with Kmail
> from the command line.
> Maybe anyone can explain me, how to do this?
>

Hi,

Please see the attached shell script.  It's not exactly what you're 
asking but better than nothing.

Cheers,

--
Pablo Sanchez - Blueoak Database Engineering, Inc
Ph:    819.459.1926        iNum:  883.5100.0990.1054
send_msg (text/plain, 3.9 KB)
#!/bin/bash

#
# Get the composer up and running.  We may specify 
# the following optional arguments:
#
# o subject
# o attachment(s)
# o cc
# o bcc
# o to
#
# Version:  1.1
# Author:   [email protected]
#
# Reference(s)
# ------------
# [ http://kb.mozillazine.org/Command_line_arguments_%28Thunderbird%29 ]
# 

#
# Defaults
#

#
# Default our format to plain text
#
FORMAT="format=2,"

#
# End of defaults
#

#
# Collect any arguments
#
while getopts fa:s:c:b:t: my_arg ; do
   case $my_arg in
      s)    SUBJECT="subject='""$OPTARG""'";
            SUBJECT_SEP=",";;
      a)    if echo "$OPTARG" | grep "^/" > /dev/null 2>&1 ; then
               ATTACHMENT_LIST="$OPTARG"$ATTACHMENT_SEP"$ATTACHMENT_LIST"
               ATTACHMENT_SEP=","
            else
               ATTACHMENT_LIST=`pwd`/"$OPTARG"$ATTACHMENT_SEP"$ATTACHMENT_LIST"
               ATTACHMENT_SEP=","
            fi;;
      t)    TO_LIST="${TO_LIST}${TO_SEP}${OPTARG}"
            TO_SEP=",";;
      f)    FORMAT="format=1,";;
      c)    CC_LIST="${CC_LIST}${CC_SEP}${OPTARG}"
            CC_SEP=",";;
      b)    BCC_LIST="${BCC_LIST}${BCC_SEP}${OPTARG}"
            BCC_SEP=",";;
      h|?)  echo "`basename $0` [ -f(ormat HTML) ] [ -a path-to-file ] [-s subject] [-c cc ] [-b bcc ] [-t to ] [ to-list ]"
            echo
            echo "where"
            echo " o multiple e-mail addresses are separated by ','"
            echo " o multiple attachments are specified by repeated -a invocations"
            echo " o default format is text, use -f to toggle to HTML"
            echo
            echo "Examples"
            echo "========"
            echo "Start a message to \`[email protected]' and \`[email protected]'"
            echo "---------------------------------------------------------"
            echo
            echo "   `basename $0` [email protected] [email protected]"
            echo
            echo "Start a message to the above with the Subject \`time for lunch?'"
            echo "---------------------------------------------------------------"
            echo
            echo "   `basename $0` -s \"time for lunch?\" [email protected] [email protected]"
            echo
            echo "Now cc: \`brother' and \`sister' and bcc: \`mom' and \`dad'"
            echo "-------------------------------------------------------"
            echo
            echo "   `basename $0` -s \"time for lunch?\" -b \"dad;mom\" -c \"brother;sister\" [email protected] [email protected]"
            echo
            echo "Start a message with a couple of files:  one file has a space and the other is one directory above"
            echo "--------------------------------------------------------------------------------------------------"
            echo
            echo "   `basename $0` -a a\ b -a ../oracle_index_internals.pdf"
            echo
            exit 1;;
   esac
done

shift $(($OPTIND - 1))

#
# If necessary, create the BCC string
#
if [ -n "$BCC_LIST" ] ; then
   BCC="bcc='""$BCC_LIST""'";
fi

#
# If necessary, create the CC string
#
if [ -n "$CC_LIST" ] ; then
   CC="cc='""$CC_LIST""'";
fi

#
# If necessary, create the CC string
#
if [ -n "$TO_LIST" ] ; then
   TO="to='""$TO_LIST""'";
fi

#
# Implicity, we allow a to-list (no -t required)
#
if [ $# -gt 0 ] ; then
   _TO=`echo $@ | sed 's/ /,/g'`

   if [ -z "$TO" ] ; then
      TO="to='""$_TO"
   else
      #
      # Remove the trailing quote
      #
      TO=`echo $TO | sed "s/'$//"`

      TO="$TO"$TO_SEP"$_TO"
   fi

   #
   # Terminate the to-string
   #
   if [ -n "$TO" ] ; then
      TO="$TO""'"
   fi
fi

#
# Paste together our attachments
#
if [ -n "$ATTACHMENT_LIST" ] ; then
   ATTACHMENTS="attachment='"$ATTACHMENT_LIST"'"
fi 

MY_ARGUMENTS="${FORMAT}${SUBJECT}${SUBJECT_SEP}${ATTACHMENTS}${ATTACHMENT_SEP}${CC}${CC_SEP}${BCC}${BCC_SEP}${TO}${TO_SEP}"

#
# Remove a straggling comma
#
MY_ARGUMENTS=`echo $MY_ARGUMENTS | sed 's/,$//'`

#
# Debug
#
# echo $MY_ARGUMENTS

`eval thunderbird -compose \"$MY_ARGUMENTS\"`

exit 0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.