IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 学习笔记(二十一)—— 使用SMTP发送电子邮件 -> 正文阅读

[网络协议]学习笔记(二十一)—— 使用SMTP发送电子邮件

一、常用的电子邮件协议

常用的电子邮件协议有SMTPPOP3IMAP4,它们都隶属于TCP/IP协议簇,默认状态下,分别通过TCP端口25110143建立连接。下面分别对其进行简单介绍

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)

结果展示:

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-09-08 11:06:18  更:2021-09-08 11:07:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年9日历 -2024/9/23 5:15:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码