zoukankan      html  css  js  c++  java
  • python发送邮件

    python发送邮件

    # python 有两个内置的和发送邮件相关的库 smtplib、email
    #     smtplib 负责发送邮件
    #     email 负责构造邮件格式和内容
    # 邮件发送需要遵循SMTP协议
    # 步骤:
    # 1. 导入相关的库和方法
    # 2. 设置邮箱域名、发件人邮箱、邮箱授权码、收件人邮箱
    # 3. 构建MIMEMultipart对象代表邮件本身,可以往里边添加文本、图片、附件等
    # 4. 设置邮件头部内容
    # 5. 添加正文文本
    # 6. 添加图片
    # 7. 添加附件(Excel表格)
    # 8. 发送邮件
    
    
    import smtplib
    import email
    # 负责构造文本
    from email.mime.text import MIMEText
    # 负责构造图片
    from email.mime.image import MIMEImage
    # 负责将过个对象集合起来
    from email.mime.multipart import MIMEMultipart
    from email.header import Header
    
    # SMTP服务器(这里实用的是163邮箱)
    mail_host = 'smtp.163.com'
    # 发件人邮箱
    mail_sender = '****@163.com'
    # 邮箱授权码(***注意时授权码***)
    mail_license = '****'
    # 收件人邮箱,可以是多个收件人
    mail_receviers = ['****@163.com','****@163.com']
    
    mm = MIMEMultipart('related')
    
    # 邮件主题
    subject_content = """
        本人邮件,请注意!!!!
    """
    
    # 设置发送者,样儿遵循格式
    mm['From'] = 'sender_name<*****@163.com>'
    # 设置接收这,严格遵循格式
    mm['To'] = 'receiver_1_name<*****@163.com>,receiver_2_name<****@163.com>'
    # 设置有劲啊主题
    mm['Subject'] = Header(subject_content, 'utf-8')
    
    # 邮件正文
    body_content = """
        邮件正文,邮件正文,邮件正文,邮件正文,邮件正文
    """
    
    # 构造文本
    message_text = MIMEText(body_content, 'plain', 'utf-8')
    
    # 项MIMEMultipart对象种添加文本对象
    mm.attach(message_text)
    
    # 构造附件
    atta = MIMEText(open('~/123.xlsx', 'rb').read(), 'base64', 'utf-8')
    # 设置附件信息
    atta['Content-Disposition'] = 'attachment;filename="123.xlsx"'
    # 添加附件导邮件信息当中去
    mm.attach(atta)
    
    # 创建SMTP对象
    stp = smtplib.SMTP()
    # 设置发件人邮箱的域名和端口, 端口未25
    stp.connect(mail_host)
    # set_debuglevel(1)可以打印出和SMTP服务器交互的所有信息
    stp.set_debuglevel(1)
    # 登录邮箱
    stp.login(mail_sender, mail_license)
    # 发送邮件
    stp.sendmail(mail_sender, mail_receviers, mm.as_string())
    print("发送成功了!!!1")
    stp.quit()
    
    
  • 相关阅读:
    NodeJs学习历程
    MongoDb学习历程
    递归函数为什么要防止栈溢出
    *args 是可变参数,args 接收的是一个 tuple; **kw 是关键字参数,kw 接收的是一个 dict。
    list和tuple的区别
    python源码阅读
    常用的线程池有哪些?
    备份
    假设你正在爬楼梯,需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶,你有多少种不同的方法可以爬到楼顶呢?
    最后一个单词的长度
  • 原文地址:https://www.cnblogs.com/nxzblogs/p/12403649.html
Copyright © 2011-2022 走看看