一、发邮件的流程

1、使用电子邮件软件MUA:mail user agent --邮件用户代理,填写完成点击发送
2、点击发送的时候电子邮件软件发出去,到MTA:mail transfer agent–邮件传输代理,即email服务提供商,如网易等
3、MTA–邮箱传输代理会把邮箱投递到邮件的最终目的地MDA:mail delivery agent—邮箱投递服务
4、email到达MDA后就会放在某个服务器上,存在数据库里,收件人必须通过MUA从MDA中把邮箱放到自己电脑上

流程:发件人 -> MUA -> MTA -> MTA -> 若干个MTA -> MDA<-MUA<-收件人

二、smtplib的用法

2.1 使用步骤:

  • 创建SMTP的操作对象并连接smtp目标服务器,例如163、QQ等
  • 根据自己的账号登录目标服务器(自己的邮箱地址和邮箱授权码)
  • 调用对象中的方法,发送邮件到目标地址

2.2 常用SMTP地址

  • 浪邮箱:smtp.sina.com,搜狐邮箱:smtp.sohu.com,qq邮箱:smtp.qq.com
  • 网易126邮箱的相关服务器信息
邮件服务器 | 服务器地址 | 端口
POP3服务器 | pop.126.com | 110
SMTP服务器 | smtp.126.com | 25
IMAP服务器 | imap.126.com | 143

2.3 MIME模块

from email.mime.text import MIMEText #构造一个MIMEText,表示文本邮件对象
#MIMEText对象中有三个需要我们设置的参数,一个是正文内容,一个是正文内容的类型,例如:”text/plain”和”text/html”,一个是正文内容的编码。
from email.mime.image import MIMEImage #构造一个MIMEImage,表示附件的图片邮件对象
from email.mime.multipart import MIMEMultipart #构造一个MIMEMultipart,表示整个邮件
"""
multipart类型主要有三种子类型:mixed、alternative、related
1、(1) MIMEMultipart类型基本格式
● MIMEMultipart(‘mixed’)类型
如果一封邮件中含有附件,那邮件的中必须定义multipart/mixed类型,邮件通过multipart/mixed类型中定义的boundary标识将附件内容同邮件其它内容分成不同的段。基本格式如下:
msg=MIMEMultipart(‘mixed’)● MIMEMultipart(‘alternative’)类型
MIME邮件可以传送超文本内容,但出于兼容性的考虑,一般在发送超文本格式内容的同时会同时发送一个
纯文本内容的副本,如果邮件中同时存在纯文本和超文本内容,则邮件需要在Content-Type域中
定义multipart/alternative类型,邮件通过其boundary中的分段标识将纯文本、超文本和邮件的
其它内容分成不同的段。基本格式如下:
msg=MIMEMultipart(‘alternative’)● MIMEMultipart(‘related’)类型
MIME邮件中除了可以携带各种附件外,还可以将其它内容以内嵌资源的方式存储在邮件中。
比如我们在发送html格式的邮件内容时,可能使用图像作为 html的背景,html文本会被存储在alternative段中,而作为背景的图像则会存储在multipart/related类型定义的段中。
基本格式如下:
msg=MIMEMultipart(‘related’)
""""""
构造文本内容,同时支持plain、html格式
msg = MIMEMultipart('alternative')
msg.attach(MIMEText('hello', 'plain', 'utf-8'))
msg.attach(MIMEText('<html><body><h1>Hello</h1></body></html>', 'html', 'utf-8'))
"""

三、实操

'''
File Name:sendEmail-test.py
Creat File Time:2022/8/20 15:18
File Create By Author:@Wheat
'''
import smtplib
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication #发送附件
#配置邮箱及密码
form_mail = ''#发送人邮箱
form_mail_password = ''#需要从邮箱的设置-账号-开启POP3-SMPT服务来获取授权码
to_email = ''#接收人邮箱#设置总的邮件对象,对象的类型为mixed
msg = MIMEMultipart('mixed')#邮件的发送人及收件人信息
msg['From'] = form_mail
msg['to'] = to_email#邮件的主题
msg['Subject'] = 'Test use Pyhton to send email '#构造文本内容
text_info = 'hello world ,nice world'
text_sub = MIMEText(text_info,'plain','utf-8') #可分为plain(纯文本)格式和html格式
msg.attach(text_sub)#构造超文本
url = "https://demom.liangyihui.net/"
html_info = """<p><a herf="%s">点击我~~打开新世界</a></p>""" % url
html_sub = MIMEText(html_info,'html',"utf-8")
#需加如下代码才可使thml_info文本的内容正常显示,会把超文本的内容当做文本显示
html_sub["Content_Disposition"] = 'attachment; filename="doctor.html"'
#把构造的内容写入邮件体
msg.attach(html_sub)#构造图片
image_file = open(r'E:\Auto Program\Doctor_autotest\image.png','rb').read()
image = MIMEImage(image_file)
image.add_header('Content-ID','<image1>')
#如不加以下代码,会导致接收方方面显示乱码的bin文件,下载后也不可打开,这个地方可以对文件重命名
image["Content_Disposition"] = 'attachment; filename="image.png"'
msg.attach(image)#构造附件
attachment_file = open(r'E:\Auto Program\Doctor_autotest\testExample.xmind','rb').read()
attachment = MIMEApplication(attachment_file)
attachment.add_header('Content-Disposition', 'attachment')
attachment["Content-Disposition"]='attachment; filename="testExample.xmind"'
msg.attach(attachment)try:sever = smtplib.SMTP('smtp.qq.com')sever.docmd('wheat',form_mail)sever.starttls()sever.login(form_mail,form_mail_password)sever.sendmail(form_mail,to_email,msg.as_string())sever.quit()print("耶~~~发送成功")
except Exception as e:print("未发送成功")print(e)

Python——email模块相关推荐

  1. python email模块

    python email模块 官方文档 email模块 电子邮件包是一个用于管理电子邮件消息的库.它的特殊设计不用于向SMTP (RFC 2821).NNTP或其他服务器发送任何电子邮件消息;这些是模 ...

  2. python email模块详解_python email模块

    python email模块 email模块 电子邮件包是一个用于管理电子邮件消息的库.它的特殊设计不用于向SMTP (RFC 2821).NNTP或其他服务器发送任何电子邮件消息;这些是模块的函数, ...

  3. python email模块详解_python模块之email: 电子邮件编码解码 (一、解码邮件)-阿里云开发者社区...

    python自带的email模块是个很有意思的东西,它可以对邮件编码解码,用来处理邮件非常好用. 处理邮件是一个很细致的工作,尤其是解码邮件,因为它的格式变化太多了,下面先看看一个邮件的源文件: Re ...

  4. python email模块写邮件_python常用模块email----创建简单的文本邮件并发送

    email模块可以方便的用来构造邮件,今天我们通过一个简单的例子来实现文本邮件的构造的发送. 先将要发送的内容写在文件里面: cat /tmp/email_test.txt hello there! ...

  5. python email模块详解_python模块之email: 电子邮件编码解码 (一、解码邮件)

    python自带的email模块是个很有意思的东西,它可以对邮件编码解码,用来处理邮件非常好用. 处理邮件是一个很细致的工作,尤其是解码邮件,因为它的格式变化太多了,下面先看看一个邮件的源文件: Re ...

  6. python email模块详解_Python使用email模块对邮件进行编码和解码的实例教程

    解码邮件python自带的email模块是个很有意思的东西,它可以对邮件编码解码,用来处理邮件非常好用. 处理邮件是一个很细致的工作,尤其是解码邮件,因为它的格式变化太多了,下面先看看一个邮件的源文件 ...

  7. 关于Outlook接收Python email模块发送携带中文名附件乱码或变成.dat解决办法

    前言 由于近期在整理发送网络邮件,在使用Python3的email模块发送携带中文附件是,发现Outlook接收到的邮件是乱码,并且后缀变成了.dat,通过网上搜索找到了解决方式,解决方式如下: 解决 ...

  8. Python系列 之 email模块 - 发送邮件

    Python email模块学习 SMTP协议客户端 EmailMessage 邮件信息对象 SMTP协议客户端 smtplib 模块定义了一个 SMTP 客户端会话对象: import smtpli ...

  9. 安装了email模块还是报错_科普:利用Python smtplib和email模块实现自动发送邮件功能...

    概要 我们都知道SMTP(简单邮件传输协议),是一组用于从原地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式.SMTP规定电子邮件应该如何格式化.如何加密,以及如何在邮件服务器之间传递.SMT ...

最新文章

  1. Git 最全命令总结都在这里了
  2. LeetCode简单题之整理字符串
  3. opencv 修改图像数值_opencv 修改图像数值_Python中使用OpenCV读取像素
  4. 看过来,包邮送AirPods Pro!
  5. 人脸识别落地开花 相关标准不可或缺
  6. mybatis做like模糊查询
  7. Face ID 上手体验信息汇总:面部解锁流畅,原理移植AR让人憧憬
  8. Google图解:Chrome 快是有原因的,科普浏览器架构!
  9. 排序算法 | 快速排序,算法的图解、实现、复杂度和稳定性分析与优化
  10. PMCAFF携手百度,干货从未如此精彩(现场快讯)
  11. redis 慢查询日志
  12. Linux文件查找之find秘笈
  13. 信息学奥赛一本通(1151:素数个数)
  14. System.Web.HttpException: 无法验证数据解决办法
  15. ARM汇编书写格式及符号(symbol)和表达式(expr)
  16. flutter android 权限,Flutter permission_handler 权限插件的使用详解
  17. 搭建一个小型教学办公网络
  18. XP卸载IE8的方法
  19. PHP支付宝支付开发流程
  20. 20189221 2018-2019-2 《密码与安全新技术专题》第六周作业

热门文章

  1. UltraEdit v21.00
  2. LED驱动程序--可拓展的LED驱动程序
  3. 零信任牢不可破,首届CSA西塞杯攻防挑战赛圆满成功
  4. 生成器模式(又名建造者模式、Builder Pattern)
  5. 微信小程序 实现实时语音识别 腾讯云
  6. E. The LCMs Must be Large(思维)
  7. Excel阅读模式/单元格行列指示/聚光灯开发 技术要点再分享
  8. ChatGPT与AIGC,新世界的创造者
  9. 空调器制冷系统故障-冷凝器脏堵
  10. IDM 下载工具利器 - 经典好用优秀的 Windows 多线程加速下载软件