用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接口自动化测试框架实例详解教程 前段时 ...
随机推荐
- infobright系列二:数据迁移
安装之后把之前infobright的数据迁移到新安装的infobright上. 1:挺掉相关的服务 2:scp 把旧数据拷到新安装的infobright上 3:修改/etc/my-ib.cnf的数据目 ...
- Oracle中的rowid
ROWID是ORACLE中的一个重要的概念.用于定位数据库中一条记录的一个相对唯一地址值.通常情况下,该值在该行数据插入到数据库表时即被确定且唯一.ROWID它是一个伪列,它并不实际存在于表中.它是O ...
- Dubbo源码解读:appendAnnotation [01]
import java.lang.reflect.Method; public class AppendAnnotation { /** * 获取某个Annotation实例的所有方法值(实际是Ann ...
- Double-check idiom for lazy initialization of instance fields
- java AES加密、解密(兼容windows和linux)
java AES加密.解密 CreationTime--2018年7月14日10点06分 Author:Marydon 1.准备工作 updateTime--2018年8月10日15点28分 up ...
- 转 CentOS下php安装mcrypt扩展
(以下步骤均为本人实际操作,可能与你的安装方法有所区别,但我会尽量排除疑惑) 大致步骤(1)安装mcrypt,(2)安装php对mcrypt的扩展,(3)重启apache (1).确认你的linux没 ...
- VS2010 lib和dll导出路径设置
创建库文件工程时往往需要设置.lib文件和.dll文件的路径. 假设一个solution对应了多个工程,然而他们共用一些库,就可以在solution文件夹下分别添加两个文件夹lib和bin(其实放在一 ...
- git for c#,文件改动内容
private static void pushModify() { string wkDir = @"E:\DotNet2010\单位project\Git.Client\lib2Test ...
- iOS 获取摄像头当前方向
在做二维码扫描和直播获取视频流的过程中,可能会用到 AVCaptureDevice AVCaptureVideoPreviewLayer AVCaptureSession 这几个参数,其中 1.定义显 ...
- linux shell 脚本攻略学习7---tr命令详解
tr命令详解 什么是tr命令?tr,translate的简写,translate的翻译: [trænsˈleit] vi. 翻译, 能被译出 vt. 翻译, 解释, 转化, 转变为, 调动 在这里用到 ...