在通过SMTP Python发送电子邮件时遇到麻烦



所以我试图通过SMTPlib与Python发送电子邮件,但我不能让它工作。我仔细阅读了Microsoft SMTP规范,并相应地添加了它们,但我无法使其工作。下面是我的代码:

    # 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."

我从键盘记录器那里得到了代码,但我把它清理了一下。我在这里读了基本的SMTP是如何工作的,但是有一些东西像starttls(方法)我不太明白。

我非常感谢你的帮助。

试试这个。

def send_mail(recipient, subject, message):
    import smtplib
    from email.MIMEMultipart import MIMEMultipart
    from email.MIMEText import MIMEText
    username = "sender@outlook.com"
    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('recipient@example.com', 'Sent using Python', 'May the force be with you.')

相关内容

最新更新