用Python3发送邮件详解
【整个邮件系统是怎样工作的】
邮件自互联网诞生之初就有了,它和web服务一样也是采用的c/s架构,比如我们常见的邮件客户端有outlook、foxmail这些邮件客户端软件。
当我们要发邮件时客户端就通过smtp协议与服务端进行通信把我们的邮件发到服务器端,比如我用的QQ邮件那么我发的邮件一定是先去了QQ
邮箱的服务器,这个时候服务器会看一下我发送的目标地址是多少,如果也是QQ邮箱用户,那么它就直接把信投递到对应的用户;如果目标
地址不是QQ邮箱那么比如说是1234@162.com,那么它会把邮件发送到162邮箱的服务器,162邮箱的服务器会把邮件投递到目标用户。投递
完成后邮件也只是进了目标用户的邮桶,用户想要看邮件还要取出来才行;邮件客户端取邮件的过程用的是pop3协议,当然还有另一个协议
也是可以用来取邮件的它就imap协议。
【python3怎么发邮件呢】
python3中我们可以直接使用smtplib这个标准库进行邮件的发送,但是为你发送的邮件对“人类”更加的友好,你通常还要加上email这个
标准库
1、了解一下最简单的邮件发送程序
from smtplib import SMTP_SSL with SMTP_SSL(host="smtp.qq.com") as smtp :
smtp.login(user='1721900707@qq.com',password='xxxxxxxxxxx')
smtp.sendmail(from_addr="1721900707@qq.com",to_addrs="1721900707@qq.com",msg="hello world")
代码的逻辑和我们日常使用邮箱时的过程是一样的、先用自己的账号密码登录上邮箱、接下来就可以发送邮件了;上面的代码
并没有用到email标准库,所以它发出来的邮件一个正常的人类是看不懂的;但是对于写代码来说它保留了主干,更有利于我
们理解发送邮件的过程
2、来一个看的下去的例子
from smtplib import SMTP_SSLfrom email.mime.text import MIMEText with SMTP_SSL(host="smtp.qq.com") as smtp :
smtp.login(user='1721900707@qq.com',password='xxxxxxxxxxxxx') msg = MIMEText("这是来自Python3的一封测试邮件",_charset="utf8")
msg["Subject"] = "测试邮件"
msg["from"] = '1721900707@qq.com'
msg["to"] = '1721900707@qq.com' smtp.sendmail(from_addr="1721900707@qq.com",to_addrs="1721900707@qq.com", msg=msg.as_string())
通过于email库配合使用后邮件已经基本人类可读了
----
用Python3发送邮件详解的更多相关文章
- Python3语法详解
一.下载安装 1.1Python下载 Python官网:https://www.python.org/ 1.2Python安装 1.2.1 Linux 平台安装 以下为在Unix & Linu ...
- python:利用smtplib模块发送邮件详解
自动化测试中,测试报告一般都需要发送给相关的人员,比较有效的一个方法是每次执行完测试用例后,将测试报告(HTML.截图.附件)通过邮件方式发送. 首先我们要做: 进入163邮箱,点击设置中的pop3/ ...
- Python3字符串 详解
Python3 字符串 字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 创建字符串很简单,只要为变量分配一个值即可. Python 访问字符串中的值 P ...
- python:利用smtplib发送邮件详解
本文转自:https://www.cnblogs.com/insane-Mr-Li/p/9121619.html 自动化测试中,测试报告一般都需要发送给相关的人员,比较有效的一个方法是每次执行完测试用 ...
- python3拆包详解
对于可迭代对象,如元组.列表.字符串.集合.字典这些可迭代对象都可以被拆包,拆包是指将一个结构中的数据拆分为多个单独变量中.拆包的方式大致有两种,一种是以变量的方式来接收,另一种是用'*'号.下面先讲 ...
- python3 常用模块详解
这里是python3的一些常用模块的用法详解,大家可以在这里找到它们. Python3 循环语句 python中模块sys与os的一些常用方法 Python3字符串 详解 Python3之时间模块详述 ...
- ActiveMQ基本详解与总结
MQ简介: MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们.消息传 ...
- ActiveMQ基本详解与总结& 消息队列-推/拉模式学习 & ActiveMQ及JMS学习
转自:https://www.cnblogs.com/Survivalist/p/8094069.html ActiveMQ基本详解与总结 基本使用可以参考https://www.cnblogs.co ...
- 【python3+request】python3+requests接口自动化测试框架实例详解教程
转自:https://my.oschina.net/u/3041656/blog/820023 [python3+request]python3+requests接口自动化测试框架实例详解教程 前段时 ...
随机推荐
- JAVA统计中文的个数
尝试了一下 不错~ /** * 获取字符串的长度,中文占一个字符,英文数字占半个字符 * * @param value 指定的字符串 * @return 字符串的长度 */ public static ...
- Rabbit mq订阅方式获取消息并可设置持久化
Rabbit 通过方式获取消息:订阅方式事实上是向queue注冊consumer,通过rpc向queue server发送注冊consumer的消息.rabbitMQ Server在收到消息后,依据消 ...
- VB 中 copymemory的有关问题
dim a() as long dim b() as bytecopymemory b(0),byval "1234",4 copymemory byval varptr(a(0) ...
- SpringMVC对日期类型的转换@ResponseBody返回的DateTime是long类型
目前,多数web开发这都在使用Spring的框架.但是这个框架有个 @ResponseBody 注解返回json时,日期格式默认显示为时间戳. 而我们页面展示的时候一般都是以下格式: yyyy-MM- ...
- Oracle Data Integrator 12c-模型(Model)和 数据存储(DataStore)
一.概念 Model模型: 描述关系型数据的模型. 是一组存放在特定的技术(如Oracle)的数据存储的集合.例如当技术为Oracle时,对应于数据库的Scheme DataStore: 数据存储 一 ...
- 〖Linux〗Ubuntu中使用KVM安装虚拟机
1. 安装软件: sudo apt-get install libvirt0 libvirt-bin libvirt-dev virt-manager qemu-system 2. 配置网桥: # i ...
- 这是一篇满载真诚的微信小程序开发干货
1月9日零点刚过,张小龙与团队正式发布微信小程序.它究竟能在微信8.5亿用户中牵动多少人,现在还很难说.但对于创业者来讲,小程序无疑带来了新契机,以及服务“上帝”们的新方式. 从今天起,只要开发者登录 ...
- Condition Variables
Condition Variables Condition variables are synchronization primitives that enable threads to wait u ...
- xml中“ < > ”转义为“ < > ”问题处理
曾经也碰到过类似问题,解决方法是在发送或者解析报文前执行上面的方法将内容转义一下,现在我用dom4j组装如下的报文(报文体中内容传输时加密处理),大致介绍一下上面方法的使用,具体看代码. import ...
- NYOJ-----最少乘法次数
最少乘法次数 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 给你一个非零整数,让你求这个数的n次方,每次相乘的结果可以在后面使用,求至少需要多少次乘.如24:2*2 ...