#!/bin/bash
# Server related configuration
MAILHOST="mail.mailhost.com"
MAILHOST="mail.invertedlogic.com"
MAILPORT=465
# User configuration
ADDRESS="$USERNAME@$MAILHOST"
ADDRESS="jryland@invertedlogic.com"
FULL_NAME=`cat /etc/passwd | grep $USERNAME | cut -d ":" -f5 | cut -d "," -f1`
FROM="\"$FULL_NAME\" <$ADDRESS>"
# Message
TO="<other@other.com>"
TO="<jryland@xiaofrog.com>"
SUBJECT="See attached file(s)"
DATE=`date -R`
#ATTACHMENT_FILES=`echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | sort`
ATTACHMENT_FILES="blah.txt blah2.txt"
MESSAGE_BODY="
Please find the attached file(s).
--
Kind regards
$FULL_NAME
"
BOUNDRY=ARandomStringThatOnlyThisProgramWouldEverUse
CLIENT_NAME=SpecialPurposeMailer
function glob_message_body()
{
cat << EOF
From: $FROM
To: $TO
Cc:
Subject: $SUBJECT
Date: $DATE
X-Mailer: $CLIENT_NAME
Content-Type: multipart/mixed; boundary="$BOUNDRY"
MIME-Version: 1.0
--$BOUNDRY
Content-Transfer-Encoding: quoted-printable
Content-type: text/plain
$MESSAGE_BODY
EOF
for FILE in ${ATTACHMENT_FILES}
do
if [ -f "$FILE" ]; then
BASE=`basename $FILE`
EXT=${FILE##*.}
MIME=`egrep "( | )$EXT( |$)" /etc/mime.types | cut -d ' ' -f 1` # cut -d '<TAB>' -f 1
[ "$MIME" == "" ] && MIME="application/octet-stream"
cat << EOF
--$BOUNDRY
Content-Type: $MIME; name="$BASE"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="$BASE"
EOF
base64 "$FILE"
fi
done
cat << EOF
--$BOUNDRY--
Some extra hidden text here :)
EOF
}
MESSAGE_BODY=`glob_message_body | sed "s/$/\\\\\r\\\\\n/g" | tr -d '\n'`
PASSWORD_STR=`python << EOF
import pygtk
pygtk.require('2.0')
import gtk
dialog = gtk.Dialog("Password", None, gtk.DIALOG_MODAL,
(gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))
label = gtk.Label()
label.set_text("\n Please Enter your password: \n")
dialog.vbox.add(label)
label.show()
lineedit = gtk.Entry()
lineedit.set_visibility(False)
lineedit.show()
dialog.vbox.add(lineedit)
dialog.show()
if ( dialog.run() == gtk.RESPONSE_ACCEPT ):
print lineedit.get_text()
lineedit.set_text("blahblahblahblahblah") # Erase
exit(-1)
else:
print "Error"
lineedit.set_text("blahblahblahblahblah") # Erase
exit(0)
EOF`
if [ "$?" -eq "0" ]
then
echo "User cancelled action"
exit
fi
USERNAME_BASE64="`echo $ADDRESS | base64`"
PASSWORD_BASE64="`echo $PASSWORD_STR | base64`"
PASSWORD_STR="blahblahblahblahblah" # Erase
python << EOF
import socket, ssl, os
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#input = os.fdopen(5,"r")
sock = ssl.wrap_socket(s)
sock.connect(("$MAILHOST", $MAILPORT))
sock.settimeout(0.2)
try:
print "R: ", sock.read()
except socket.error:
None
sock.write("EHLO $MAILHOST\r\n")
try:
print "R: ", sock.read()
except socket.error:
None
sock.write("AUTH LOGIN\r\n")
try:
print "R: ", sock.read()
except socket.error:
None
sock.write("$USERNAME_BASE64\r\n$PASSWORD_BASE64\r\n"+
"MAIL FROM:$ADDRESS\r\nRCPT TO:$TO\r\nDATA\r\n"+'$MESSAGE_BODY'+"\r\n")
sock.write(".\r\n")
sock.write("QUIT\r\n")
sock.write("\r\n")
try:
print "R: ", sock.read()
except socket.error:
None
sock.close()
exit(-1)
EOF
MESSAGE_BODY=""
PASSWORD_BASE64="blahblahblahblahblah" # Erase