如何使用python 3发送电子邮件?

时间:2012-07-09 14:13:03

标签: python python-3.x

请帮帮我!我想在python 3中创建一个脚本,它向任何人发送电子邮件,但是从本地机器发送。我现在是python的初学者,这就是为什么我尝试过的大多数脚本根本不起作用的原因。如果你还解释我需要做什么以及脚本,那将是一个很大的帮助。谢谢!

3 个答案:

答案 0 :(得分:5)

这个短小的数字怎么样。

'''
Created on Jul 10, 2012
test email message
@author: user352472
'''
from smtplib import SMTP_SSL as SMTP
import logging
import logging.handlers
import sys
from email.mime.text import MIMEText

def send_confirmation():
    text = '''
    Hello,

    Here is your test email.

    Cheers!
    '''        
    msg = MIMEText(text, 'plain')
    msg['Subject'] = "test email" 
    me ='yourcooladdress@email.com'
    msg['To'] = me
    try:
        conn = SMTP('smtp.email.com')
        conn.set_debuglevel(True)
        conn.login('yourcooladdress', 'yoursophisticatedpassword')
        try:
            conn.sendmail(me, me, msg.as_string())
        finally:
            conn.close()

    except Exception as exc:
        logger.error("ERROR!!!")
        logger.critical(exc)
        sys.exit("Mail failed: {}".format(exc))


if __name__ == "__main__":
    logger = logging.getLogger(__name__)
    logger.setLevel(logging.DEBUG)
    ch = logging.StreamHandler()
    ch.setLevel(logging.DEBUG)
    formatter = logging.Formatter(
    '%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    ch.setFormatter(formatter)
    logger.addHandler(ch)

    random_ass_condition = True

    if random_ass_condition:
        send_confirmation()

答案 1 :(得分:2)

看看以下内容:

它们非常易于使用,应该对基本的电子邮件进行排序

答案 2 :(得分:2)

直截了当:

from smtplib import SMTP_SSL as SMTP
from email.mime.text import MIMEText

def send_email(subject, body, toaddr="helloworld@googlegroups.com"):
    fromaddr = "johndoe@gmail.com"
    msg = MIMEText(body, 'plain')
    msg['To'] = toaddr
    msg['Subject'] = subject

    server = SMTP('smtp.gmail.com')
    server.login(fromaddr, "y0ur_p4ssw0rd")
    server.sendmail(fromaddr, toaddr, msg.as_string())
    server.quit()

所以您现在可以这样称呼它:

send_email(subject, body)

或者您可以使用第三个参数指定电子邮件地址:

send_email(subject, body, "yourfriend@gmail.com")