学习笔记(二十一)—— 使用SMTP发送电子邮件
一、常用的电子邮件协议
常用的电子邮件协议有SMTP、POP3、IMAP4,它们都隶属于TCP/IP协议簇,默认状态下,分别通过TCP端口25
、110
和143
建立连接。下面分别对其进行简单介绍
1.1、SMTP协议
SMTP的全称是"SimpleMailTransferProtocol",即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP服务器就是遵循SMTP协议的发送邮件服务器。SMTP认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录SMTP服务器,这就使得那些垃圾邮件的散播者无可乘之机。增加SMTP认证的目的是为了使用户避免受到垃圾邮件的侵扰。
SMTP已是事实上的E-Mail传输的标准。
1.2、POP协议
POP邮局协议负责从邮件服务器中检索电子邮件。它要求邮件服务器完成下面几种任务之一:从邮件服务器中检索邮件并从服务器中删除这个邮件;从邮件服务器中检索邮件但不删除它;不检索邮件,只是询问是否有新邮件到达。POP协议支持多用户互联网邮件扩展,后者允许用户在电子邮件上附带二进制文件,如文字处理文件和电子表格文件等,实际上这样就可以传输任何格式的文件了,包括图片和声音文件等。在用户阅读邮件时,POP命令所有的邮件信息立即下载到用户的计算机上,不在服务器上保留。POP3(PostOfficeProtocol3)即邮局协议的第3个版本,是因特网电子邮件的第一个离线协议标准。
1.3、IMAP协议
互联网信息访问协议(IMAP)是一种优于POP的新协议。和POP一样,IMAP也能下载邮件、从服务器中删除邮件或询问是否有新邮件,但IMAP克服了POP的一些缺点。例如,它可以决定客户机请求邮件服务器提交所收到邮件的方式,请求邮件服务器只下载所选中的邮件而不是全部邮件。客户机可先阅读邮件信息的标题和发送者的名字再决定是否下载这个邮件。通过用户的客户机电子邮件程序,IMAP可让用户在服务器上创建并管理邮件文件夹或邮箱、删除邮件、查询某封信的一部分或全部内容,完成所有这些工作时都不需要把邮件从服务器下载到用户的个人计算机上。支持种IMAP的常用邮件客户端有:ThunderMail,Foxmail,MicrosoftOutlook等。
电子邮件传输协议的运用
Internet上传送电子邮件是通过一套称为邮件服务器的程序进行硬件管理并储存的。与个人计算机不同,这些邮件服务器及其程序必须每天24小时不停地运行,否则就不能收发邮件了,简单邮件传输协议SMTP(SimpleMailTransferProtocol)和邮局协议POP(PostOfficeProtocol)是负责用客户机/服务器模式发送和检索电子邮件的协议。
二、SMTP使用
准备:导入email模块:
pip install pyemail
在Python中, smtplib模块定义了一个SMTP客户端会话对象,该对象可用于通过SMTP或ESMTP侦听器守护程序将邮件发送到任何Internet计算机。(Python 2.3或更高版本默认自带smtplib模块,无需额外安装。)
发送邮件
- 邮件发送方(发送方地址,发送方客户端授权密码,SMTP服务器地址)
- 邮件内容
- 邮件接收方
示例代码1(发送文本):
import smtplib
from email.mime.text import MIMEText#邮箱这些我就不方便写了哈
msg_from = '11xxxx@qq.com' #发送方邮箱
msg_to = 'xxxx@126.com' #接收方邮箱
pwd = 'xxxxx' #授权码subject = '来着python的信'
content = '你完蛋了!!!'
#构造邮件
msg = MIMEText(content) #msg邮件对象
msg['Subject'] = subject
msg['To'] = msg_to
msg['From'] = msg_from#发送邮件
try:ss = smtplib.SMTP_SSL('smtp.qq.com',465) #465:QQ邮箱服务器的端口号ss.login(msg_from,pwd)ss.sendmail(msg_from,msg_to,msg.as_string()) #发送print('邮箱发送成功!')
except Exception as e:print('邮箱发送失败!详情:',e)
示例代码2(发送HTML页面):
html代码:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>selenium</title>
</head>
<body><input id="alert" value="alert" type="button" onclick="alert('this is alert!!!')"><input id="confirm" value="confirm" type="button" onclick="confirm('this is confirm!!!')"><input id="prompt" value="prompt" type="button" onclick="var name = prompt('请输入用户名:','请输入');document.write(name)">
</body>
</html>
py代码:
import smtplib
from email.mime.text import MIMEText#邮箱这些我就不方便写了哈
msg_from = '11xxxx@qq.com' #发送方邮箱
msg_to = 'xxxx@126.com' #接收方邮箱
pwd = 'xxxxx' #授权码subject = '这是HTML页面'
with open('ex.html','rb') as f:content = f.read().decode()
#构造邮件
msg = MIMEText(content,'html','utf-8') #msg邮件对象
msg['Subject'] = subject
msg['To'] = msg_to
msg['From'] = msg_from#发送邮件
try:ss = smtplib.SMTP_SSL('smtp.qq.com',465) #465:QQ邮箱服务器的端口号ss.login(msg_from,pwd)ss.sendmail(msg_from,msg_to,msg.as_string()) #发送print('邮箱发送成功!')
except Exception as e:print('邮箱发送失败!详情:',e)
结果展示:
学习笔记(二十一)—— 使用SMTP发送电子邮件相关推荐
- python3.4学习笔记(二十一) python实现指定字符串补全空格、前面填充0的方法
python3.4学习笔记(二十一) python实现指定字符串补全空格.前面填充0的方法 Python zfill()方法返回指定长度的字符串,原字符串右对齐,前面填充0. zfill()方法语法: ...
- Mr.J-- jQuery学习笔记(二十一)--模拟微博页面
先看之前的节点操作方法:Mr.J-- jQuery学习笔记(二十)--节点操作方法 Mr.J-- jQuery学习笔记(五)--属性及属性节点 Mr.J-- jQuery学习笔记(十一)--事件委托 ...
- kvm虚拟化学习笔记(二十一)之KVM性能优化学习笔记
本学习笔记系列都是采用CentOS6.x操作系统,KVM虚拟机的管理也是采用virsh方式,网上的很多的文章都基于ubuntu高版本内核下,KVM的一些新的特性支持更好,本文只是记录了CentOS6. ...
- linux驱动开发学习笔记二十一:异步通知
一.异步通知简介 我们首先来回顾一下"中断",中断是处理器提供的一种异步机制,我们配置好中断以后就可以让处理器去处理其他的事情了,当中断发生以后会触发我们事先设置好的中断服务函数, ...
- opencv学习笔记二十一:使用HSV颜色空间实现颜色识别
一.颜色空间介绍 RGB 颜色空间是大家最熟悉的颜色空间,即三基色空间,任何一种颜色都可以由该三种 颜色混合而成.然而一般对颜色空间的图像进行有效处理都是在 HSV 空间进行的,HSV( ...
- IOS学习笔记二十一(NSDictionary、NSMutableDictionary)
1.NSDictionary.NSMutableDictionary 可以理解为java里面的map,一个key对应一个value,key不可以重复 NSDictionary不可变,NSMutable ...
- java自定义一个timeout,Timeout操作符 RxJava 学习笔记二十一
timeout用于检测在给定时间内observables没有及时响应.如果指定的时间量没有发出任何项目,则超时会使observables失败并出现TimeoutException. 我们将从debou ...
- 立创eda学习笔记二十一:添加、移除泪滴
在PCB电路板设计中,为了让焊盘更坚固,防止机械制板时焊盘与导线之间断开,常在焊盘和导线之间用铜膜布置一个过渡区,形状像泪滴,故常称做补泪滴(Teardrops). 泪滴的作用 避免电路板受到巨大外力 ...
- 西门子PLC学习笔记二十一-(中断处理一)
中断处理用来实现对特殊内部事件或外部事件的快速响应.CPU检测到中断请求时,立即响应中断,调用中断源对应的中断程序(OB).执行完中断程序后,返回被中断的程序中. 中断源类型主要有:I/O模块的硬件中 ...
- 媒体查询配合rem使用(HTML+CSS学习笔记二十一)
媒体查询 + rem 计算方法 计算rem方法: 结合媒体查询 -> 随着设备的改变 更改html font-size的值. 媒体查询确定范围?? 移动端设计图 : 640px 750p ...
最新文章
- 马斯克的脑机接口能如愿以偿吗?
- XenApp/XenDesktop 7.11中对于视频、图片、文字的优化的说明
- django初探-创建简单的博客系统(一)
- Java中设计模式之生产者消费者模式-3
- iOS项目组件化历程
- 文献阅读(part1)--A Survey of Clustering With Deep Learning From the Perspective of Network Architecture
- CSS之不使用Media Queries的自适应CSS
- linux mysql学习_Linux学习笔记(MySql操作)
- docker安装软件(vim,service)
- INNER JOIN连接两个表、三个表、五个表的SQL语句
- 微课|中学生可以这样学Python(5.6.1节):列表推导式1
- 【报告分享】2021年95后医美人群洞察报告:颜值经济,95后“美力”来袭.pdf(附下载链接)...
- B站上这些Python和数据分析视频真香!
- Shell - cp
- 鲁菜泰斗同和居 日坛新店用上便民新科技
- iPad Pro机身无故弯曲 Apple对此做出回应及应对
- java方法重写[详解]
- ie开始屏蔽旧的java插件_IE将开始屏蔽旧版ActiveX控件
- guzzle下载图片
- ENVI去除影像的地理坐标信息
热门文章
- 0068 terra vista 4.0安装包及破解教程
- python爬虫构建国外代理池_Python爬虫入门(四)教你免费拥有自己的代理IP池
- 2022年后人工智能八大应用方向
- html里 alt属性什么意思,HTML
- MacBook的delete键使用技巧
- 大牛深入讲解!6年老Android面经总结,系列教学
- 新浪微博热门话题 (30 分)
- [Error] expected primary-expression before '' token是什么意思
- 拼刀刀店铺后台的参数anti-content逆向分析
- 论文的研究背景如何着笔