SMTP电子邮件格式及源码解析
SMTP协议之电子邮件格式
以下是使用FOXMAIL接收邮件后,得到的邮件源码,包括正文和两个附件(.JPG, .TXT):
----------------------------------------------------------------
以下部分为邮件服务器添加的邮件头
----------------------------------------------------------------
Received:from m15-17.126.com (unknown [220.181.15.17])
bymx10 (Coremail) with SMTP id PMCowECZWSfPlodRSu6NCw--.779S2;
Mon,06 May 2013 19:41:03 +0800 (CST)
DKIM-Signature:v=1; a=rsa-sha256; c=relaxed/relaxed; d=126.com; // 域名密钥识别邮件标准,判断垃圾邮件
s=s110527;h=Received:Date:From:To:Subject:Content-Type:
MIME-Version:Message-ID; bh=B57Zfi/+wCVQ61kM9GVkCECk1ax4OZVQDtnW // 不是base64编码
T4lS0x8=;b=XdeYidC7bR1a1l7x3yGAMiMR5ElDx2O4/db2iPrVc0dZ7Y7ANStu // 不是base64编码
6d9o4l9yVysfwk8vifb0eqyxV2wp28pIlfLEGZbDDpKaLMCaLAbVXdW+2hQl4ojd // 不是base64编码
sJ7NiAdF1j5X2N87wktFKA8ZK4lPhBYI1yFrNIT+PODg2NzF1CX2FDM=
Received: from zzzzyy91$126.com ( [202.205.103.22] ) by ajax-webmail-wmsvr17
(Coremail) ; Mon, 6 May 2013 19:41:01 +0800(CST)
X-Originating-IP: [202.205.103.22] //初始ip地址,同一电脑不同邮箱发邮件,该值相同
---------------------------------------------------------------------------------------------------------
DATA(以下内容由邮件客户端定义,为DATA命令后输入的内容)
灰色高亮为主要内容
--------------------------------------------------------------------------------------------------------
Date: Mon, 6 May2013 19:41:01 +0800 (CST)
From: [base64code]<zzzzyy91@126.com>
To: [emailaddress]
Subject: [base64 code]
X-Priority: [integer] // 邮件优先级
X-Mailer: [Coremail Webmail Server Version SP_ntes V3.5 build // 代理发信客户端
20130412(21945.5326.5325) Copyright (c)2002-2013 www.mailtech.cn 126com]
X-CM-CTRLDATA: [base64 code] // X-邮件服务器自定义的信息段,未知作用
Content-Type:multipart/mixed; // 声明邮件内容格式
boundary="----=_Part_354288_309861106.1367840461937" // 声明邮件内容boundary
MIME-Version: 1.0 // 声明MIME版本
Message-ID: <> // X-邮件服务器自定义的信息段
X-CM-TRANSID: //X-邮件服务器自定义的信息段
X-CM-SenderInfo: // X-邮件服务器自定义的信息段
X-Coremail-Antispam: // X-邮件服务器自定义的信息段
---------------------------------------------------------
以下为邮件的内容
黄色高亮部分为内容说明语句和定界符
绿色高亮部分为邮件内容
蓝色高亮部分为附件内容
--------------------------------------------------------
------=_Part_354288_309861106.1367840461937 //邮件内容开始
Content-Type: multipart/alternative; //邮件内容格式
boundary="----=_Part_354290_1105600126.1367840461937" // 邮件正文boundary
------=_Part_354290_1105600126.1367840461937 //邮件正文boundary -- 正文开始
Content-Type: text/plain; charset=GBK // 邮件正文格式和字符集
Content-Transfer-Encoding: base64
[base64]mailcontent (plain)[base64] //邮件正文(文本格式)编码(base64)
------=_Part_354290_1105600126.1367840461937 // 邮件正文boundary --可选HTML格式
Content-Type: text/html; charset=GBK //邮件正文格式和字符集
Content-Transfer-Encoding: base64
[base64]mailcontent (html)[base64] //邮件正文(html格式)编码(base64)
------=_Part_354290_1105600126.1367840461937-- // 邮件正文boundary -- 正文结束
------=_Part_354288_309861106.1367840461937 // 邮件内容boundary -- 附件1开始
Content-Type: image/jpeg; name="20130324_224528_982.jpg" // 附件格式及文件名
Content-Transfer-Encoding: base64
Content-Disposition: attachment;filename="20130324_224528_982.jpg"
[base64](.jpg)image attachment[base64] //附件-图片内容编码(base64)
------=_Part_354288_309861106.1367840461937 // 邮件内容boundary -- 附件2开始
Content-Type: text/plain; name="window data type.txt" // 附件格式及文件名
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="window datatype.txt"
[base64](.txt)plain attachment[base64] // 附件-文本内容编码(base64)
------=_Part_354288_309861106.1367840461937-- // 邮件内容boundary -- 附件结束
SMTP电子邮件格式及源码解析相关推荐
- FastJson PropertyNamingStrategy 转换成JSON字符串的四种格式配置及源码解析
FastJson在将bean转成JSON字符串时, 默认使用CamelCase(驼峰命名)的配置; 在1.2.15版本之后,FastJson支持配置PropertyNamingStrategy,有四种 ...
- Python|excel表格数据一键转json格式小工具|支持xlsx、xls格式转json|【源码+解析】
背景 最近在使用JavaScript编写一些浏览器RPA脚本,脚本使用过程中遇到一些问题,脚本使用的数据往往存放在excel表,但运行时只能读取json数据,导致频繁人工excel转json,效 ...
- Rocksdb Compaction 源码详解(一):SST文件详细格式源码解析
文章目录 前言 comapction流程概述 SST 文件细节 Footer meta index block filter meta block index meta block Compressi ...
- 谷歌BERT预训练源码解析(三):训练过程
目录 前言 源码解析 主函数 自定义模型 遮蔽词预测 下一句预测 规范化数据集 前言 本部分介绍BERT训练过程,BERT模型训练过程是在自己的TPU上进行的,这部分我没做过研究所以不做深入探讨.BE ...
- Simple Dynamic Strings(SDS)源码解析和使用说明二
在<Simple Dynamic Strings(SDS)源码解析和使用说明一>文中,我们分析了SDS库中数据的基本结构和创建.释放等方法.本文将介绍其一些其他方法及实现.(转载请指明出于 ...
- 【vuejs深入三】vue源码解析之二 htmlParse解析器的实现
写在前面 一个好的架构需要经过血与火的历练,一个好的工程师需要经过无数项目的摧残. 昨天博主分析了一下在vue中,最为基础核心的api,parse函数,它的作用是将vue的模板字符串转换成ast,从而 ...
- Volley 源码解析之图片请求
一.前言 上篇文章我们分析了网络请求,这篇文章分析对图片的处理操作,如果没看上一篇,可以先看上一篇文章Volley 源码解析之网络请求.Volley 不仅仅对请求网络数据作了良好的封装,还封装了对图片 ...
- dayjs 源码解析(一)(api)
前言 作为一个程序员,阅读别人优秀代码是提升自己技术能力的一个很好的方法.下面,我将自己阅读 dayjs(v1.6.10)的源码的过程记录下来. 阅读库的代码,首先先要知道这个库的作用 dayjs 是 ...
- kube-proxy源码解析
kube-proxy源码解析 ipvs相对于iptables模式具备较高的性能与稳定性, 本文讲以此模式的源 码解析为主,如果想去了解iptables模式的原理,可以去参考其实现,架构上无差别. ku ...
最新文章
- 总是多次出现 那个同样的 权限错误 _storage_write_error_, 所以一开始就把机器设好setenforce 0...
- 机器学习模型解释性工具SHAP
- Github之深入解析Ruby Gems缓存
- matlab简易编程,MATLAB简单编程
- 【Java】命令行生成JavaDoc文档
- getprofile()获取不到路径_获取链接文件Document——Dynamo Python系列教程(一)
- win下php+mysql+apache配置
- wxpython安装不上怎么回事_安装Python - wxPython失败的解决方法
- 正定矩阵,半正定矩阵,负定矩阵的通俗理解
- 16元日薪,从阿里云雇佣一个专家阿里云中小企业AI产品码栈解析
- 苹果电脑上好用的几款复制粘贴工具
- 酒店管理系统/酒店客房管理系统的设计与实现
- DDR SDRAM内存优化
- 【计算机网络】根据IP地址计算网络地址
- 适合做引流的产品有什么特点?引流产品必须具备几个特点
- Java实现word导出与pdf导出
- 腾讯云技术认证考试综述 腾讯云技术认证题库
- java面试笔试题50道及答案
- 【工具分享】如何识别手机里偷数据的那些软件(适用于安卓平台)
- 数字图像处理——信用卡数字识别