E-mail Composition and Decoding
一、邮件涉及协议及本文说明
1. 协议
- SMTP(Simple Mail Transfer Protocal) 简单邮件传输协议,用于发送邮件。
- MIME(Mutipurpose Internet Mail Extensions) 多用途互联网邮件扩展,可发送附件。但由于,程序不许要这个功能,因此我们有学习,也就不会出现在本文中。
- POP(Post Office Protocal) 邮局协议,一般用POP3。可以用以较为简单的方式接收邮件(从邮件服务器上下载邮件到主机上)。
- IMAP(Internet Mail Access Protocal) 也用于接收邮件,功能较POP3更为强大些。
2. 在下面中会更详细的介绍这些协议,以及在Python中的使用方式。
二、邮件格式粗糙解释。
Email在组织的时候遵循header和body的映射模式。而header是固定一些可选的如 From, To, Subject, Date time, Receiver, Message-ID, Content, Attachment。它们的组织形式如:
- From: ....(显示发送者邮箱)
- To: ... (显示目的地邮箱)
- Subject: ... (显示主题)
- Date: ... (显示发送时间还是到达时间?)
- Content: ... (邮件主体内容)
- Attachment: ... (附件)
对于我来说,我只需要From, To, Subject, Content。
三、撰写“极简单”邮件
1. 下面以一个例子说明怎样生成一封邮件。
from email.message import Message # 一个email一般封装在Message类中,所以需要在email.message中引入Message类。# 这是邮件主体内容 text = """ Hello, This is a test message from vicczx.--viczzx--"""msg = Message() # 构造一个Message实例 msg['To'] = "toUserName@example.com" #接收者邮箱 msg['From'] = "myUserName@example.com" #自己的邮箱 msg['Subject'] = 'Test Message' #邮件主题 msg.set_payload(text) #将上面的邮件内容通过set_payload()函数封装进msg# 通过上面也可一看到, 邮件格式就是通过映射的方式进行组织的。需要注意的是:'To','From'等区分大小写,否则接收者无法解析print(msg.as_string()) # 查看邮件内容
2. 添加Date和Message-ID header
绝大多数邮件有个Date header,这个可以通过email.utils库进行生成;
你也可以生成一个Message-ID header,就可以区别世界上所有其他的邮件了。这个也是通过email.utils模块的函数进行生成。
对于我来说,因为我不打算做一个功能强大的邮件客户端,因此,这些都是可有可无的。不过加上这些内容后,也算比较完整了。如下代码:
from email.utils from email.message import Message # 一个email一般封装在Message类中,所以需要在email.message中引入Message类。# 这是邮件主体内容 text = """ Hello, This is a test message from vicczx.--viczzx--"""msg = Message() # 构造一个Message实例 msg['To'] = "toUserName@example.com" #接收者邮箱 msg['From'] = "myUserName@example.com" #自己的邮箱 msg['Subject'] = 'Test Message' #邮件主题 msg['Date'] = email.utils.formatdate(localtime=1) #函数详细说明请查看官方Python API Reference msg['Message-ID'] = email.utils.make_msgid() msg.set_payload(text) #将上面的邮件内容通过set_payload()函数封装进msg# 通过上面也可一看到, 邮件格式就是通过映射的方式进行组织的。需要注意的是:'To','From'等区分大小写,否则接收者无法解析print(msg.as_string()) # 查看邮件内容
四、解析邮件(Parsing Messages)
知道了怎样生成邮件的,其实解析邮件就能够大致了解了。
# 已知msg 为下载下来的Message()实例邮件。 print("This message is from : ", msg['From'] ) print("This message is to : ", msg['To']) print("Subject: ", msg['Subject']) # 主题 print("Content: ", msg.get_payload()) # 得到主体内容
但是在实际上,可能没有这么简单。因为需要使用到中文,邮件解析还要考虑这一点;其他问题在这里不再这里过多说明,我会在后面详细的讲解程序开发过程中遇到的种种问题,所以,如果有需要请看后面几篇文章。
转载于:https://www.cnblogs.com/zixuan-zhang/p/3402818.html
E-mail Composition and Decoding相关推荐
- python 接收邮件服务器地址_Python 用IMAP接收邮件
一.简介 IMAP(Internet Message Access Protocol),这个协议与POP一样,也是从邮件服务器上下载邮件到本机,不过IMAP比POP的功能要更加强大些,IMAP除支持P ...
- 用Python实现gmail邮箱服务,实现两个邮箱之间的绑定(中)
这篇博客,主要讲解用Python实现邮箱服务的几个需要学习的模块:E-mail Compotion and Decoding(邮件生成和解析).SMTP.POP.IMAP 如上篇博客所讲,我学习过程参 ...
- python模拟登录qq邮箱爬取_python模拟登录qq邮箱
前两天做一个任务,要写一个收取qq邮箱邮件的脚本.开始认为挺简单,后来发现还是有一些坑在里面. 首先使用python尝试模拟登录qq邮箱,发现普通用户已经不能通过账号密码模拟登录qq邮箱了.要用到授权 ...
- python模拟登录qq邮箱
前两天做一个任务,要写一个收取qq邮箱邮件的脚本.开始认为挺简单,后来发现还是有一些坑在里面. 首先使用python尝试模拟登录qq邮箱,发现普通用户已经不能通过账号密码模拟登录qq邮箱了.要用到授权 ...
- 【Android 10 源码】MediaRecorder 录像流程:MediaRecorder 开始录制
前面已经分析过 MediaRecorder 初始化和配置过程,接下来就可以真正进入录制流程了.现在不难得出这个结论:MediaRecorder 录制 Camera 的数据实际上是将预览数据经过 Med ...
- Android MPEG4Writer.cpp 简单跟读
首先在前面申明一点,本人接触Android的时间并不长,只是因为喜欢 Android开发,并且项目有需要,才会去看Android framework 层MPEG4Writer.cpp 的代码.在这里也 ...
- Linux雷鸟邮件,thunderbird雷鸟mail
sudo apt-get install thunderbird安装雷鸟mail Account Settings->Server Settings->Use secure connect ...
- thunderbird雷鸟mail
sudo apt-get install thunderbird安装雷鸟mail Account Settings->Server Settings->Use secure connect ...
- php sendmail方法,PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
本文实例讲述了PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法.分享给大家供大家参考,具体如下: 1.php mail()函数在windows不能用,需要安装sen ...
最新文章
- Centos7:update-initramfs -u:command not found
- python处理多个excel文件-python多个excel文件合并成一个sheet
- function收集
- 11.2.1 jQuery介绍与使用
- android ImageSwitcher的使用
- CodeForces - 1236D Alice and the Doll(贪心+二分+模拟)
- SpringMVC第五次课 SSM整合
- 时代风口下,东软集团软件业务怎么转型?
- 将ABAP On-Premises系统连接到中央检查系统以进行自定义代码迁移
- c++2015语言,2015年7月TIOBE编程语言排行榜:C++ 的复兴
- 雷军再失猛将!小米12号创始员工离职 曾一起喝粥创立小米
- 千方百剂创建账套服务器文件,千方百剂辅助工具使用手册图解
- windows下用wget下载数据
- 技术分享 | Online DDL 工具 gh-ost
- uni-app - 实现手机扫描二维码并跳转全过程
- php精华之独孤九剑
- NEFU 262 贪吃的九头龙(树形背包,4级)
- 为什么要给代码添加注释?
- 当你准备自定义view的时候
- python 转换文本从繁体到简体,但保留一切繁体符号
热门文章
- react native 的TextInput组件问题
- 一招彻底帮你搞定HashMap源码,成长路线图
- 用java怎么实现数据库_用Java实现数据库应用系统
- python爬取动态网页图片_python爬虫之爬取动态加载的图片_百度
- python functools.reduce_Python-functools模块(reduce、partial、lru_cache)
- js中计时器setTimeout、setInterval、requestAnimationFrame区别
- 网站SEO中内页标签该如何进行优化?
- 404页面设计技巧性分享不容错过!
- 浅析SEO优化分类信息网站优化的三大技巧
- 老电脑安装matlab 2018卡不卡,软件装C盘会变卡?Windows系统要怎么用才不卡?