zoukankan      html  css  js  c++  java
  • 用emai和smtplib模块发email

    from email import encoders
    from email.header import Header
    from email.mime.text import MIMEText
    from email.utils import parseaddr, formataddr
    from email.mime.base import MIMEBase
    from email.mime.multipart import MIMEMultipart
    import smtplib


    def _format_addr(s):
    name, addr = parseaddr(s)
    return formataddr((Header(name, 'utf-8').encode(), addr))


    #from_addr = input('From: ')
    #password = input('Password: ')
    #to_addr = input('To: ')
    #smtp_server = input('SMTP server: ')
    from_addr = 'b***@163.com'#'3***@qq.com'
    password = '***'#'*****'
    to_addr = 'b***@163.com'#'3***@qq.com'
    smtp_server = 'smtp.163.com'#'smtp.qq.com'

    #msg = MIMEText('hello, send by Python.', 'plain', 'utf-8')
    #msg = MIMEText('<html><body><h1>Hello</h1>'+
    # '<p>send by<a href="http://www.python.org">Python</a>...</p>'+
    # '</body></html>','html','utf-8')

    msg = MIMEMultipart()
    msg['From'] = _format_addr('Python爱好者<%s>'% from_addr)
    msg['To'] = _format_addr('管理员<%s>'% to_addr)
    msg['Subject'] = Header('来自SMTP的问候....','utf-8').encode()

    msg.attach(MIMEText('<html><body><h1>Hello</h1>'+
    '<p>send by<a href="http://www.python.org">Python</a>...</p>'+
    '</body></html>','html','utf-8'))


    with open('/Users/lewisliu/杨.png','rb') as f:
    #设置附件的MIME和文件名,这里是bmp类型
    mime = MIMEBase('image','png', filename='杨.png')
    #加上必要的头文件
    mime.add_header('Content-Disposition', 'attachment', filename='杨.png')
    mime.add_header('content-ID','<0>')
    mime.add_header('X-Attachment-Id','0')
    #把附件的内容读进来
    mime.set_payload(f.read())
    #用Base64编码
    encoders.encode_base64(mime)
    #添加到MIMEMultipart
    msg.attach(mime)

    server = smtplib.SMTP(smtp_server, 25)
    server.set_debuglevel(1)
    server.login(from_addr, password)
    server.sendmail(from_addr, [to_addr], msg.as_string())
    server.quit()
  • 相关阅读:
    泛型类型转为DataTable类型
    FineUploader 学习笔记
    如何理解Python中的if __name__ == '__main__'
    什么是python 中的顶层代码?
    任务十三:零基础JavaScript编码(一)
    目前比较全的CSS重设(reset)方法总结(转)
    任务十二:学习CSS 3的新特性
    JS高级程序设计第三版——变量、作用域和内存问题
    任务十:Flexbox 布局练习
    任务九:使用HTML/CSS实现一个复杂页面
  • 原文地址:https://www.cnblogs.com/LewisAAA/p/9249668.html
Copyright © 2011-2022 走看看