zoukankan      html  css  js  c++  java
  • python发送邮件源码 | the5fire的技术博客

    python发送邮件源码 | the5fire的技术博客

    python发送邮件源码

    python发送邮件源码

    这是之前一个公司的面试题中的一小部分。比较习惯把这中工具性的东西单独的写成一个函数,这样以后再用到,直接拿来就好。

    这段代码的作用就是发送邮件可以添加附件,且可以是html样式的邮件。具体看代码吧

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

    def send_mail(to, sub, content, from_email, mail_pass, filelist = []):
        '''
        to:发给谁
        sub:主题
        content:内容
        from_email:登录邮箱
        mail_pass:登录密码
        filelist:附件列表,文件路径
        send_mail("aaa@126.com","the5fire","welcome to the5fire.net","xxxx@xxx.com","xxxxxx")
        '''

       
        mail_postfix = from_email.split('@')[1]
        mail_host="smtp.%s" % (mail_postfix,)
        mail_user= from_email.split('@')[0]

        me=mail_user+"<"+mail_user+"@"+mail_postfix+">"

        msgRoot = MIMEMultipart('related')
        msgRoot['Subject'] = sub.encode('gbk')
        msgRoot['Form'] = me
        msgRoot['To'] = to
        msgRoot.preamble = 'this is a multi-part message IN MIME format'
       
        msgAlternative = MIMEMultipart('alternative')
        msgRoot.attach(msgAlternative)

        msgText = MIMEText(content, 'html','gbk')
        msgAlternative.attach(msgText)
        for onefile in filelist:
            att = MIMEText(open(onefile,'rb').read(),'base64','gb2312')
            att["Content-Type"] = 'application/octet-stream'
            att["Content-Disposition"] = 'attachment;filename=%s' % onefile
            msgAlternative.attach(att)

        message = msgRoot.as_string()
        try:
            s = smtplib.SMTP()
            try:
                s.connect(mail_host)
            except Exception,e:
                print str(e)
            s.starttls()
            s.login(mail_user,mail_pass)
            s.sendmail(me, to, message)
            s.close()
            return True
        except Exception, e:
            print str(e)
            return False
  • 相关阅读:
    hive之窗口函数
    linux环境下Mysql的卸载和重新安装和启动
    2017ACM暑期多校联合训练
    2017ACM暑期多校联合训练
    状态压缩dp
    铺砖问题 (状态压缩dp)
    POj 2104 K-th Number (分桶法+线段树)
    POJ 2991 Crane (线段树)
    4 Values whose Sum is 0 POJ 2785 (折半枚举)
    Billboard HDU 2795 (线段树)
  • 原文地址:https://www.cnblogs.com/lexus/p/2850283.html
Copyright © 2011-2022 走看看