#!/usr/bin/env python
# -*- coding: utf-8 -*-
# ShootMail anonymous email sender
 
import smtplib
from email.MIMEText import MIMEText
from optparse import OptionParser
 
defaultmx = "aspmx.l.google.com"
 
def shootMail(fro, to, subj, text, server=defaultmx):
    """
    The function that actually gets all the job done.
    Supply source address, destination address, message subject,
    message text and (optionally) vulnerable mail exchanger address.
    """
    mail = MIMEText(text)
    mail['From'], mail['Subject'], mail['To'] = fro, subj, to
    smtp = smtplib.SMTP(server)
    smtp.sendmail(fro, [to], mail.as_string())
    smtp.close()
 
if __name__ == "__main__":
    parser = OptionParser()
    parser.add_option("-f", dest="fromaddr", help="sender email", metavar="from@example.com")
    parser.add_option("-t", dest="destaddr", help="receiver email", metavar="to@example.com")
    parser.add_option("-s", dest="subj", help="message subject", metavar="subject")
    parser.add_option("-m", dest="msg", help="message text", metavar="text")
    parser.add_option("-x", dest="smtp", help="mail exchanger address (default: Google's primary MX)", metavar="mx.example.com")
    (options, args) = parser.parse_args()
    if not options.fromaddr:
        options.fromaddr = raw_input('From: ')
    if not options.destaddr:
        options.destaddr = raw_input('To: ')
    if not options.subj:
        options.subj = raw_input('Subject: ')
    if not options.smtp:
        options.smtp = defaultmx
    if not options.msg:
        print "Enter your message, end with two newlines:"
        options.msg = ''
        while True:
            mline = raw_input('> ')
            if mline:
                options.msg = options.msg+mline+"\n"
            else:
                break
    print "Sending message..."
    shootMail(options.fromaddr, options.destaddr, options.subj, options.msg, options.smtp)
    print "Message sent"
