from getpass import getpass
import smtplib

def prompt(prompt):
    return raw_input(prompt).strip()

# 4. Read data from stdin
fromaddr = prompt("From: ")
toaddrs  = prompt("To:   ").split()

print '\nEnter headers, end with \\r\\n\\r\\n:'
headers = 'From: %s\r\nTo: %s\r\n' % (fromaddr, ', '.join(toaddrs))
while True:
    try:
        line = raw_input()
    except EOFError:
        break
    if not line:
        break
    headers = headers + line

print 'Enter message, end with ^D:'
msg = ''
while 1:
    try:
        line = raw_input()
    except EOFError:
        break
    msg = msg + '\r\n' + line

msg = headers + msg

# 1 & 2. Connection and upgrading to STARTTLS
server = smtplib.SMTP('smtp.science.ru.nl')
server.starttls()

# 3. Authentication
print('\nPlease enter your science login information.')
while True:
    user = prompt("User: ")
    password = getpass("Pass: ")
    try:
        server.login(user, password)
        break
    except smtplib.SMTPAuthenticationError:
        print('Incorrect credentials, try again.')

# 4. Send mail
server.sendmail(fromaddr, toaddrs, msg)
server.quit()