2015-05-18 4 views
1

Итак, я пытаюсь отправить электронное письмо через SMTPlib с помощью Python, но я не могу заставить его работать. Я прочитал спецификации Microsoft SMTP и поместил их соответственно, но я не могу заставить его работать. Вот мой код:Проблемы с отправкой электронной почты через SMTP Python

# Send an email 
    SERVER = "smtp-mail.outlook.com" 
    PORT = 587 
    USER = "******@outlook.com" 
    PASS = "myPassWouldBeHere" 
    FROM = USER 
    TO  = ["******@gmail.com"] 
    SUBJECT = "Test" 
    MESSAGE = "Test" 
    message = """\ 
From: %s 
To: %s 
Subject: %s 
%s 
""" % (FROM, ", ".join(TO), SUBJECT, MESSAGE) 
    try: 
     server = smtplib.SMTP() 
     server.connect(SERVER, PORT) 
     server.starttls() 
     server.login(USER,PASS) 
     server.sendmail(FROM, TO, message) 
     server.quit() 
    except Exception as e: 
     print e 
     print "\nCouldn't connect." 

Я получил код от кейлоггера, но немного почистил его. Я прочитал here о том, как работает основной SMTP, но есть несколько вещей, таких как starttls (Методы) Я не совсем понимаю.

Я действительно ценю любую помощь в этом.

+0

Что означает «Я не могу заставить его работать»? Вы получили сообщение об ошибке? Сбой компьютера? –

ответ

9

Попробуйте это. Это работает в Python 2.7.

def send_mail(recipient, subject, message): 

    import smtplib 
    from email.MIMEMultipart import MIMEMultipart 
    from email.MIMEText import MIMEText 

    username = "[email protected]" 
    password = "sender's password" 

    msg = MIMEMultipart() 
    msg['From'] = username 
    msg['To'] = recipient 
    msg['Subject'] = subject 
    msg.attach(MIMEText(message)) 

    try: 
     print('sending mail to ' + recipient + ' on ' + subject) 

     mailServer = smtplib.SMTP('smtp-mail.outlook.com', 587) 
     mailServer.ehlo() 
     mailServer.starttls() 
     mailServer.ehlo() 
     mailServer.login(username, password) 
     mailServer.sendmail(username, recipient, msg.as_string()) 
     mailServer.close() 

    except error as e: 
     print(str(e)) 


send_mail('[email protected]', 'Sent using Python', 'May the force be with you.') 
+0

Если сообщение содержит только одну часть, то перенос его в многостраничный файл явно избыточен. – tripleee

Смежные вопросы