Python邮件发送基本流程

邮件自动发送

一、邮件发送基本流程

  1. 生活中发送邮件的步骤:注册邮箱账号 --> 打开登录邮箱的网址 – > 输入账号和网址 --> 构建邮件 --> 发送邮件

    import smtplib  # 联系邮箱服务器,登陆邮箱和发送邮件的模块
    # 导入邮件相关的库
    from email.mime.multipart import MIMEMultipart
    from email.header import Header
    from email.mime.text import MIMEText
    
  2. 准备邮箱账号和授权码

    username = '3141589453@qq.com'
    mandate_code = 'swvwqzcbhhzodceb'
    
  3. 连接邮箱服务器

    con = smtplib.SMTP_SSL('smtp.qq.com')
    
  4. 登陆邮箱

    con.login(username, mandate_code)
    
  5. 构建邮件

    # 1.创建邮件对象(创建空邮件)
    msg = MIMEMultipart()
    # 2. 添加邮件主题
    header = Header('邮件主题','utf-8').encode()   # 主题对象 = Header(邮件主题,编码方式)
    msg['Subject'] = header
    # 3.设置发件人显示信息
    sender = f'{username}<{username}>'
    msg['From'] = sender
    # 4.设置收件人信息
    receiver = '3141589453@qq.com.com'  # qq邮箱
    msg['To'] = receiver
    # 5.构建文件内容
    content = MIMEText('邮件正文内容','plain','utf-8')
    msg.attach(content)
    # 6. 发送文件
    con.sendmail(username,'3141589453@qq.com',msg.as_string())       
    # 7.关闭连接
    con.quit()
    

二、添加文件附件

  1. 准备账号

    import smtplib  # 联系邮箱服务器,登陆邮箱和发送邮件的模块
    # 导入邮件相关的库
    from email.mime.multipart import MIMEMultipart
    from email.header import Header
    from email.mime.text import MIMEText
    username = '3141589453@qq.com'
    mandate_code = 'swvwqzcbhhzodceb'
    
  2. 连接邮箱服务器

    con = smtplib.SMTP_SSL('smtp.qq.com')
    
  3. 完成邮箱登录

    con.login(username, mandate_code)
    
  4. 构建邮箱

    msg = MIMEMultipart()
    # 1.主题
    header = Header('邮件主题','utf-8').encode()   # 主题对象 = Header(邮件主题,编码方式)
    msg['Subject'] = header
    # 2. 收件人
    receiver = '3141589453@qq.com.com'
    msg['To'] = receiver
    # 3. 发件人
    sender = f'{username}<{username}>'
    msg['From'] = sender
    # 4.正文
    # plain -- 普通文本
    content = MIMEText('具体内容请查收附件','plain','utf-8')
    msg.attach(content)
    # 5.添加附件
    file1 = open('files/2022Python数据分析就业班大纲-0901.pdf','rb').read()
    #  base64 -- 文件
    att1 = MIMEText(file1, 'base64', 'utf-8')
    att1['Content-Disposition'] = 'attachment; filename="pyecharts.pdf"'    # attachment附件
    msg.attach(att1)
    
    file2 = open('files/08-Excel数据看板.xlsx','rb').read()
    att2 = MIMEText(file2, 'base64', 'utf-8')   # base64  附件内容
    att2['Content-Disposition'] = 'attachment; filename="excel.xlsx"'
    msg.attach(att2)
    
    # 6.发送邮件
    con.sendmail(username, '3141589453@qq.com', msg.as_string())
    con.quit()
    

三、发送富文本

  1. 准备账号

    import smtplib  # 联系邮箱服务器,登陆邮箱和发送邮件的模块
    # 导入邮件相关的库
    from email.mime.multipart import MIMEMultipart
    from email.header import Header
    from email.mime.text import MIMEText
    username = '3141589453@qq.com'
    mandate_code = 'swvwqzcbhhzodceb'
    
  2. 连接邮箱服务器

    con = smtplib.SMTP_SSL('smtp.qq.com')
    
  3. 完成邮箱登录

    con.login(username, mandate_code)
    
  4. 构建邮箱

    msg = MIMEMultipart()
    
    msg['Subject'] = Header('发送富文本', 'utf-8').encode()
    # 设置邮件发送者
    msg['From'] = f'{username} <{username}>'
    # 设置邮件接收者
    msg['To'] = '3141589453@qq.com'
    
  5. 发送富文本

    # html  -  富文本(超文本)
    # MIMEText(html代码, 'html', 'utf-8')
    html = open('files/demo.html', 'r', encoding='utf-8').read()
    content = MIMEText(html, 'html', 'utf-8')  # 第一个参数是读取的富文本
    msg.attach(content)
    
    con.sendmail(username, '1901035005@qq.com', msg.as_string())
    con.quit()
    

四、发送图片

  1. 准备账号和授权码

    import smtplib  # 联系邮箱服务器,登陆邮箱和发送邮件的模块
    # 导入邮件相关的库
    from email.mime.multipart import MIMEMultipart
    from email.header import Header
    from email.mime.text import MIMEText
    from email.mime.image import MIMEImage
    
    username = '3141589453@qq.com'
    mandate_code = 'swvwqzcbhhzodceb'
    
  2. 连接服务器

    con = smtplib.SMTP_SSL('smtp.qq.com')
    
  3. 登陆邮箱

    con.login(username, mandate_code)
    
  4. 准备邮箱

    msg = MIMEMultipart()
    msg['Subject'] = Header('发送图片', 'utf-8').encode()
    # 设置邮件发送者
    msg['From'] = f'{username} <{username}>'
    # 设置邮件接收者
    msg['To'] = '3141589453@qq.com'
    
  5. 发送图片

    # 1)图片附件
    file1 = open('file/0.jpg', 'rb').read()
    att1 = MIMEText(file, 'base64', 'utf-8')
    att1['Content-Disposition'] = 'attachment; filename = "load.jpeg"'
    msg.attach(aat1)
    # 2)以正文方式发送图片
    #  创建图片对象并且添加id值
    image_data = open('file/OIP-C.png', 'rb').read()
    image = MIMEImage(image_data)
    image.add_header('Content-ID', '<imagge1>')   #给图片对象设置图片的id
    msg.attach(image)
    
    image_data2 = open('files/0.jpg', 'rb').read()
    image2 = MIMEImage(image_data2)
    image2.add_header('Content-ID', '<image2>')
    msg.attach(image2)
    
    # 在html代码中通过img标签的src属性来绑定图片:src="cid:图片id"
    # 发送一张图片
    # content = MIMEText('图片效果如下:<br><img src="cid:image1">', 'html', 'utf-8')    
    # msg.attach(content)
    
    # 发送两张图片
    content = MIMEText('图片效果如下:<br><img src="cid:image1"alt=""><br><img src="cid:image2 alt="">', 'html','utf-8')
    msg.attach(content)
    

五、前端开发相关基础知识

  1. 前端开发知识

    # 前端三大技术:HTML、CSS、JS
    # HTML   -  给页面提供内容(通过不同的标签来给网页提供不同的功能)
    # CSS   -  负责网页内容的样式和布局
    #  JS   -  负责网页内容变化
    
    
    # 1.HTML  -  给网页提供内容
    '''
    HTML是通过不同的标签来给网页提供不同的功能的
    1) 标签语法
    a. 双标签: <标签名 属性名1="属性值1" 属性名2="属性值2" ...>标签内容</标签名>
    b. 单标签: <标签名 属性名1="属性值1" 属性名2="属性值2" ...>   或者  <标签名 属性名1="属性值1" 属性名2="属性值2" .../>
    2) 常用标签:
    标题标签: h1、h2、h3、h4、h5、h6
    段落标签: p
    文字相关其他标签: span、b、i
    换行标签: br
    图片标签: img
    超链接: a
    按钮标签: button、input
    输入框: input
    单选、复选按钮: input
    '''
    

六、常见的标签

  1. html常见的标签

    
    <!--!&#45;&#45;html版本说明-->
    <!DOCTYPE html>
    
    <!--!&#45;&#45;html标签代表整个网页-->
    <html lang="en">
      <head>
        <meta charset="UTF-8">
        <!--    设置网页标题    -->
        <title>GTitle</title>
        <!--    设置网页图标    -->
        <link rel="icon" href="files/0.jpg">
      </head>
    
    <body>
    <!--    1.标题标签: h1~h6    -->
    <h1>一级标题</h1>
    <h2>二级标题</h2>
    <h3>三级标题</h3>
    <h4>四级标题</h4>
    <h5>五级标题</h5>
    <h6>六级标题</h6>
    
    <!--    2.段落标签: p    -->
    <p>段落文字1</p>
    <p>段落文字2</p>
    <!--    3.其他文字相关标签: span、b(加粗)、i(倾斜)    -->
    <span>2022-11-21  16:50</span>
    <span>北京</span>
    <span>|</span>
    <span>人民科技账号</span>
    
    <p>展现新时代的<i>精神高度</i>, 描绘新征程的<b>恢弘气象</b></p>
    
    <!--    4.特殊的文字符号: &emsp;  -  空一个像素、&nbsp;  -  空一个像素、br
              html代码中的换行和空格都是无效的
              -->
    <p>
      &emsp;&emsp;欲买桂花同载酒,<br>
      只可惜古人何时再见了
    </p>
    <!--    5.图片标签: img   -->
    <!--  浏览器上显示本地图片  -->
    <img src="files/hutao.jpeg" alt="">
    <img src="o.jpg" alt="">
    
    <!--  邮件中显示本地图片  -->
    <img src="cid:i1">
    <img src="cid:i2">
    
    <!--   6.超链接 :a
      target  -  设置跳转方式,默认是——self
      -->
    <a target="_blank" href="https://www.baidu.com">百度</a>
    
    <!--    7.input标签   -->
    <!--    1)普通文本输入框   -->
    用户名:<input type="text">
    <!--    2)密码输入框   -->&emsp;:<input type="password">
    <br><br>
    <!--    3)按钮输入框   -->
    <input type="button" value="登录">
    &emsp;&emsp;&emsp;
    <input type="button" value="注册">
    <br><br>
    
    <!--    4)单选按钮    -->
    <input type="radio" name="a"><input type="radio" name="a"><br><br>
    
    <!--    5)复选按钮    -->
    <input type="checkbox">记住密码
    
    </body>
    
```

七、发送富文本2(掉用 html标签)

  1. 准备账号和授权码

    import smtplib
    from email.mime.multipart import MIMEMultipart
    from email.header import Header
    from email.mime.text import MIMEText
    from email.mime.image import MIMEImage
    
    username = '3141589453@qq.com'
    mandate_code = 'swvwqzcbhhzodceb'
    
  2. 连接服务器

    con = smtplib.SMTP_SSL('smtp.qq.com')
    
  3. 登陆邮箱

    con.login(username, mandate_code)
    
  4. 构建邮件

    msg = MIMEMultipart()
    msg['Subject'] = Header('发送富文本', 'utf-8').encode()
    
    msg['From'] = f'{username} <{username}>'
    msg['To'] = '3141589453@1qq.com'
    
  5. 发送富文本

    image_data1 = open('files/load.jpeg', 'rb').read()
    image1 = MIMEImage(image_data1)
    image1.add_header('Content-ID', '<i1>')
    msg.attach(image1)
    
    image_data2 = open('0.jpg', 'rb').read()
    image2 = MIMEImage(image_data2)
    image2.add_header('Content-ID', '<i2>')
    msg.attach(image2)
    
    
    # html - 富文本(超文本)
    # MIMEText(html代码, 'html', 'utf-8')
    html = open('00706常见的标签.html', 'r', encoding='utf-8').read()
    content = MIMEText(html, 'html', 'utf-8')
    msg.attach(content)
    
    con.sendmail(username, '3141589453@qq.com', msg.as_string())
    con.quit()
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值