SMTP、POP3、MIME三者之间的区别
OP3,全名为“Post Office Protocol - Version 3”,即“邮局协议版本3”。是TCP/IP协议族中的一员,POP3 服务所用的端口为110,由RFC 1939 定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件
SMTP 是一种提供可靠且有效电子邮件传输的协议。 SMTP 是建模在 FTP 文件传输服务上的一种邮件服务,主要用于传输系统之间的邮件信息并提供来信有关的通知。
IMAP4(Internet Message Access Protocol 4) 即 Internet信息访问协议的第4版本,是用于从远程服务器上访问电子邮件的标准协议,它是一个客户机/服务器(Client/Server)模型协议,用户的电子邮件由服务器负责接收保存,用户可以通过浏览信件头来决定是不是要下载此信。用户也可以在服务器上创建或更改文件夹或邮箱,删除信件或检索信件的特定部分。
MIME(Multi-Purpose Internet Mail Extensions)多功能Internet邮件扩展 。MIME2是MIME的第二版
这次给大家带来$ajax()怎样从服务器获取json数据,$ajax()怎样从服务器获取json数据的注意事项有哪些,下面就是实战案例,一起来看一下。
下面小编就为大家分享一篇基于$ajax()方法从服务器获取json数据的几种方式总结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
一.什么是json
json是一种取代xml的数据结构,和xml相比,它更小巧但描述能力却很强,网络传输数据使用流量更少,速度更快。
json就是一串字符串,使用下面的符号标注。
{键值对} : json对象
[{},{},{}] :json数组
"" :双引号内是属性或值
: :冒号前为键,后为值(这个值可以是基本数据类型的值,也可以是数组或对象),所以 {"age": 18} 可以理解为是一个包含age为18的json对象,而[{"age": 18},{"age": 20}]就表示包含两个对象的json数组。也可以使用{"age":[18,20]}来简化上面的json数组,这是一个拥有一个age数组的对象。
二.$ajax()方法中dataType属性的取值
$ajax()方法中dataType属性要求为String类型的参数,预期服务器返回的数据类型。如果不指定,JQuery将自动根据http包mime信息返回responseXML或responseText在第三部分解释,并作为回调函数参数传递。可用的类型如下:
xml:返回XML文档,可用JQuery处理。
html:返回纯文本HTML信息;包含的script标签会在插入DOM时执行。
script:返回纯文本JavaScript代码。不会自动缓存结果。除非设置了cache参数。注意在远程请求时(不在同一个域下),所有post请求都将转为get请求。
json:返回JSON数据。
jsonp:JSONP格式。使用SONP形式调用函数时,例如myurlcallback=,JQuery将自动替换后一个“”为正确的函数名,以执行回调函数。
三.Mime数据类型及response的setContentType()方法
什么是MIME类型在把输出结果传送到浏览器上的时候,浏览器必须启动适当的应用程序来处理这个输出文档。这可以通过多种类型MIME(多功能网际邮件扩充协议)来完成。在HTTP中,MIME类型被定义在Content-Type header中。
例 如,架设你要传送一个Microsoft Excel文件到客户端。那么这时的MIME类型就是“application/vndms-excel”。在大多数实际情况中,这个文件然后将传送给 Execl来处理(假设我们设定Execl为处理特殊MIME类型的应用程序)。在Java中,设定MIME类型的方法是通过Response对象的ContentType属性。比如常用:responsesetContentType("text/html;charset=UTF-8")进行设置。
最早的HTTP协议中,并没有附加的数据类型信息,所有传送的数据都被客户程序解释为超文本标记语言HTML 文档,而为了支持多媒体数据类型,HTTP协议中就使用了附加在文档之前的MIME数据类型信息来标识数据类型。
每个MIME类型由两部分组成,前面是数据的大类别,例如文本text、图象image等,后面定义具体的种类。
常见的MIME类型:
超文本标记语言文本 html,html text/html
普通文本 txt text/plain
RTF文本 rtf application/rtf
GIF图形 gif image/gif
JPEG图形 ipeg,jpg image/jpeg
au声音文件 au audio/basic
MIDI音乐文件 mid,midi audio/midi,audio/x-midi
RealAudio音乐文件 ra, ram audio/x-pn-realaudio
MPEG文件 mpg,mpeg video/mpeg
AVI文件 avi video/x-msvideo
GZIP文件 gz application/x-gzip
TAR文件 tar application/x-tar
客户程序从服务器上接收数据的时候,它只是从服务器接受数据流,并不了解文档的名字,因此服务器必须使用附加信息来告诉客户程序数据的MIME类型。
服务器在发送真正的数据之前,就要先发送标志数据的MIME类型的信息,这个信息使用Content-type关键字进行定义,例如对于HTML文档,服务器将首先发送以下两行MIME标识信息,这个标识并不是真正的数据文件的一部分。
Content-type: text/html
注意,第二行为一个空行,这是必须的,使用这个空行的目的是将MIME信息与真正的数据内容分隔开。
如前面所说,在Java中,设定MIME类型的方法是通过Response对象的ContentType属性,设置的方法是使用responsesetContentType(MIME)语句,responsesetContentType(MIME)的作用是使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据。
Tomcat的安装目录\conf\webxml中就定义了大量MIME类型 ,可以参考。比如可以设置:
responsesetContentType("text/html; charset=utf-8"); html
responsesetContentType("text/plain; charset=utf-8"); 文本
application/json json数据
这个方法设置发送到客户端的响应的内容类型,此时响应还没有提交。给出的内容类型可以包括字符编码说明,例如:text/html;charset=UTF-8。如果该方法在getWriter()方法被调用之前调用,那么响应的字符编码将仅从给出的内容类型中设置。该方法如果在getWriter()方法被调用之后或者在被提交之后调用,将不会设置响应的字符编码,在使用http协议的情况中,该方法设置 Content-type实体报头。
四.使用$ajax()方法获取json数据的三种方式
dataType参数的配置决定了jquery如何帮助我们自动解析服务器返回的数据,有几种方式可以获取后台返回的json字符串并解析为json对象,下面是Java为例解释,下面三中方式的结果都是图一所示,项目运行在内网,无法截图,只能拍照,见谅。
1、$ajax()参数中不设置dataType,后台response也不设置返回类型,则默认会以普通文本处理responsesetContentType("text/html;charset=utf-8");也是作为文本处理,js中需要手动使用eval()或$parseJSON()等方法将返回的字符串转换为json对象使用。
//Java代码:后台获取单个数控定位器的历史表格的数据
public void getHistorySingleData() throws IOException{
HttpServletRequest request = ServletActionContextgetRequest();
HttpServletResponse response = ServletActionContextgetResponse();
responsesetHeader("Content-type", "text/html;charset=UTF-8");
responsesetContentType("text/html;charset=utf-8");
String deviceName = requestgetParameter("deviceName");
String startDate= requestgetParameter("startDate");
String endDate = requestgetParameter("endDate");
SingleHistoryData[] singleHistoryData = chartServicegetHistorySingleData(deviceName,startDate, endDate);
Systemoutprintln(singleHistoryDatalength);
Systemoutprintln(JSONArrayfromObject(singleHistoryData)toString());//打印:[{"time":"2016-11-11 10:00:00","state":"运行","ball":"锁紧",},{"time":"2016-11-11 10:00:05","state":"运行","ball":"锁紧",},{},{}]查到几条singleHistoryData对象就打印几个对象的信息{"time":"2016-11-11 10:00:05","state":"运行","ball":"锁紧",}
responsegetWriter()print(JSONArrayfromObject(singleHistoryData)toString());
}
/js代码:选择查询某一时间段的数据,点击查询之后进行显示/
$("#search")click(function () {
var data1 = [];
var n;
var deviceName=$("body")attr("id");
var startDate = $("#startDate")val();
var endDate = $("#endDate")val();
$ajax({
url:"/avvii/chart/getHistorySingleData",
type:"post",
data:{
"deviceName":deviceName,
"startDate": startDate,
"endDate": endDate
},
success: function (data) {
alert(data);//---->弹出[{"time":"2016-11-11 10:00:00","state":"运行","ball":"锁紧",},{"time":"2016-11-11 10:00:05","state":"运行","ball":"锁紧",},{},{}],后台传过来几条singleHistoryData对象就打印几个对象的信息{"time":"2016-11-11 10:00:05","state":"运行","ball":"锁紧",}
alert(ObjectprototypetoStringcall(data)); //--->弹出[object String],说明获取的是String类型的数据
var JsonObjs = eval("(" + data + ")"); //或者:var JsonObjs = $parseJSON(data);
alert(JsonObjs);//alert(JsonObjs);---->弹出[object Object],[object Object],[object Object][object Object],[object Object],[object Object]后台传过来几条singleHistoryData对象就打印几个[object Object]
n=JsonObjslength;
if(n==0){
alert("您选择的时间段无数据,请重新查询");
}
for(var i = 0; i < JsonObjslength; i++){
var name = JsonObjs[i]['time'];//针对每一条数据:JsonObjs[i],或者:JsonObjs[i]time
var state = JsonObjs[i]['state'];
var ball = JsonObjs[i]['ball'];
var xd = JsonObjs[i]['xd'];
var yd = JsonObjs[i]['yd'];
var zd = JsonObjs[i]['zd'];
var xf = JsonObjs[i]['xf'];
var yf = JsonObjs[i]['yf'];
var zf = JsonObjs[i]['zf'];
data1[i] = {name:name,state:state,ball:ball,xd:xd,yd:yd,zd:zd,xf:xf,yf:yf,zf:zf};//个数与下面表头对应起来就可以了,至于叫什么名字并不影响控件的使用
}
if(JsonObjslength != 10){
for(var j=0;j<(10-((JsonObjslength)%10));j++){ //补全最后一页的空白行,使表格的长度保持不变
data1[j+JsonObjslength] = {name:" ",state:"",ball:"",xd:"",yd:"",zd:"",xf:"",yf:"",zf:""};
}
}
var userOptions = {
"id":"kingTable", //必须 表格id
"head":["时间","运行状态","球头状态","X向位置/mm","Y向位置/mm","Z向位置/mm","X向承载力/Kg","Y向承载力/Kg","Z向承载力/Kg"], //必须 thead表头
"body":data1, //必须 tbody 后台返回的数据展示
"foot":true, // true/false 是否显示tfoot --- 默认false
"displayNum": 10, //必须 默认 10 每页显示行数
"groupDataNum":6, //可选 默认 10 组数
sort:false, // 点击表头是否排序 true/false --- 默认false
search:false, // 默认为false 没有搜索
lang:{
gopageButtonSearchText:"搜索"
}
}
var cs = new KingTable(null,userOptions);
}
});
});2、$ajax()参数中设置dataType="json",则jquery会自动将返回的字符串转化为json对象。后台可以设置为:推荐responsesetContentType("text/html;charset=utf-8");或者responsesetContentType("application/json;charset=utf-8");
//Java代码:后台获取单个数控定位器的历史表格的数据
public void getHistorySingleData() throws IOException{
HttpServletRequest request = ServletActionContextgetRequest();
HttpServletResponse response = ServletActionContextgetResponse();
responsesetHeader("Content-type", "text/html;charset=UTF-8");
responsesetContentType("text/html;charset=utf-8");
String deviceName = requestgetParameter("deviceName");
String startDate= requestgetParameter("startDate");
String endDate = requestgetParameter("endDate");
SingleHistoryData[] singleHistoryData = chartServicegetHistorySingleData(deviceName,startDate, endDate);
Systemoutprintln(singleHistoryDatalength);
Systemoutprintln(JSONArrayfromObject(singleHistoryData)toString());//打印:[{"time":"2016-11-11 10:00:00","state":"运行","ball":"锁紧",},{"time":"2016-11-11 10:00:05","state":"运行","ball":"锁紧",},{},{}]查到几条singleHistoryData对象就打印几个对象的信息{"time":"2016-11-11 10:00:05","state":"运行","ball":"锁紧",}
responsegetWriter()print(JSONArrayfromObject(singleHistoryData)toString());
}/js代码:页面首次加载时,显示规定时间段的数据/
var data1 = [];
var deviceName=$("body")attr("id");
var startDate = $("#startDate")val("2000-01-01 00:00:00");
var endDate = $("#endDate")val("2018-01-01 00:00:00");
$ajax({
url:"/avvii/chart/getHistorySingleData",
type:"post",
data:{
"deviceName":deviceName,
"startDate": "2000-01-01 00:00:00",
"endDate": "2018-01-01 00:00:00"
},
dataType:"json",
success: function (data) {
alert(data);//---->弹出[object Object],[object Object],[object Object][object Object],[object Object],[object Object]后台传过来几条sing
背景介绍:
MIME:全称Multipurpose Internet Mail Extensions,多功能Internet 邮件扩充服务。它是一种多用途网际邮件扩充协议,在1992年最早应用于电子邮件系统,但后来也应用到浏览器。MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。
在Android中通过文件的MIME类型来判断有哪些应用程序可以处理这些文件,并使用其中的某一个应用程序(如果有多个可选的应用程序,则用户必须指定一个)处理之。
在写android资源管理器(文件浏览器)的时候,希望能在资源管理器的中实现打开文件的操作,此时就需要用到文件的MIME类型。
m4a文件的MIME类型代码:
{m4a, audio/mp4a-latm},
m4a文件的MIME类型在服务器里的填写方法:
m4a对应值audio/mp4a-latm
操作指南:
1、打开Internet信息服务IIS管理器
2、网站-站点右键-属性
3、HTTP头-MIME 类型
4、新建-填写-扩展名里填写:m4a MIME 类型里填写:audio/mp4a-latm
5、点击确定、应用完成。
方法/步骤
1
打开IIS:开始菜单》运行
2
输入“inetmgr”回车
3
在左侧选中需要配置MIME类型的站点,然后在中间的窗口中找到“MIME类型”并双击
4
点击分组依据可以按不同的分组来查看已有的MIME类型
5
点击右侧窗口中的操作“添加”
6
输入文件的扩展名和MIME类型,点击确定
7
没添加MIME类型时访问出现以下错误
有SMTP、POP3、IMAP4。
1、SMTP协议
SMTP协议(Simple Mail Transfer Protocol,简单邮件传输协议)是最早出现的,也是被普遍使用的最基本的Internet邮件服务协议。
正如它的名称,SMTP协议支持的功能确实比较简单,并且有安全方面的缺陷。经过它传递的所有电子邮件都是以普通正文形式进行的。它不能够传输诸如图像等非文本信息。
在网络上明码传输文本信息意味着任何人都可以在中途截取并复制这些邮件,甚至对邮件内容进行窜改。邮件在传输过程中可能丢失。别有用心的人也很容易以冒名顶替的方式伪造邮件。为了克服上述缺陷,后来出现了ESMTP (Extended SMTP,扩展的SMTP协议)。
2、POP3协议
POP协议(Post Office Protocol,邮局协议)是一种允许用户从邮件服务器收发邮件的协议。它有2种版本,即POP2和POP3,都具有简单的电子邮件存储转发功能。
POP2与POP3本质上类似,都属于离线式工作协议,但是由于使用了不同的协议端口,两者并不兼容。与SMTP协议相结合,POP3是目前最常用的电子邮件服务协议。
3、IMAP4协议(Internet Message Access Protocol,Internet消息访问协议)
为用户提供了有选择地从邮件服务器接收邮件的功能、基于服务器的信息处理功能和共享信箱功能。
扩展资料:
邮件的其他协议:
1、HTTP协议和HTML语言
支持这个协议的邮件服务器可以提供基于Web的电子邮件收发服务。借助HTML语言,管理员可以自己定义和编写面向用户的电子邮件服务网页。这样,用户可以使用任何Web浏览器,通过Internet在任何地点收发电子邮件。系统管理员也可以使用Web浏览器,实现对邮件服务器的远程管理。
2、MIME协议
多用途Internet邮件扩展(Multipurpose Internet Mail Extensions)协议。作为对SMTP协议的扩充,MIME规定了通过SMTP协议传输非文本电子邮件附件的标准。
3、LDAP协议
轻量目录访问协议(Lightweight Directory Access Protocol)。通过将相关的内容存放在统一的目录之下,目录服务为用户提供了基于客户/服务器工作方式的信息查询手段。
-电子邮件
我刚从服务器(2003)上看了还真没有aspx对应的mime值
看来看去只有这个可能代替NET下所有东东的
扩展名application mime值application/x-ms-application
希望对你有用
是因为你的邮箱安全控件 S/MIME 已经丢失。
解决方法步骤:
1、进入你的outlook邮箱,转至选项卡界面;
2、在邮件安全性选项下点击下载控件(setupmclexe)到本地;
3、安装控件;
4、重新登录邮箱即可。
点击账户,在发送服务器的覆盖断口处打勾,然后把端口改成587,更多选项里面选择“使用发送服务器”。
https://wwwcnblogscom/jsean/articles/1610265html
https://developermozillaorg/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types
最近在读 Golang 的源码,看到 mimego 这个文件时,有点看不懂了。
MIME, Mutipurpose Internet Mail Extensions,多用途 Internet 邮箱扩展。MIME 是描述消息内容类型的 internet 标准。在创建之初,是为了在发送电子邮件时附加多媒体数据,让邮件客户程序根据其类型进行处理。现在 MIME TYPE 被 HTTP 协议支持后,使得HTTP能够传输各种各样的文件。
浏览器通过 MIME TYE,也就是该资源的媒体类型,来决定以什么形式显示数据。
媒体类型通常是通过 HTTP 协议,由 Web 服务器请求头中的 Content-Type 来告知浏览器数据类型的,比如:
表示内容是 text/HTML 类型,也就是超文本文件。注意,必须是 "text/HTML" 而不是 "HTML/text"因为 MIME 是经过 ietf 组织协商,以 RFC 的形式发布在网上的。
需要注意的是: 只有一些在互联网上获得广泛应用的格式才会获得一个 MIME Type ,如果是某个客户端自己定义的格式,一般只能以 application/x- 开头。
Internet 中有一个专门组织来对 MIME 标准进行修订,但是由于 Internet 发展过快,很多应用程序便使用在类别中以 x- 开头的方法标识这个类别还没有成为标准,例如 x-gzip,x-tar等。
其实是不是标准无关紧要,只要客户端和服务器都能识别这个格式就可以了。在 app 端会使用自定义标准来保证数据安全。
MIME类型与文档的后缀相关,因此服务器使用文档的后缀来区分不同文件的 MIME 类型,服务器中必须规定文件后缀和MIME类型之间的对应关系。而客户端从服务器上接收数据的时候,它只是从服务器接收数据流,并不了解文档的名字,因此服务器需要使用附加信息来告诉客户程序数据的 MIME 类型。服务器将首先发送以下两行 MIME 标识信息,这个信息并不是真正的数据文件的一部分。
注意,第二行为一个空格,这是必须的,使用这个空行的目的是将 MIME 信息与真正的数据内容分离开。
通用结构: type/subtype
MIME 类型对大小写不敏感,但是通常传统写法是小写。
分类
对于 text 文件类型若是没有特定的 subtype,就使用 text/plain, 类似的二进制文件如果没有特定或已知的 subtype,就使用 application/octet-stream
还有非MIME 类型,但是比较通用的 icon 类型,image/x-icon
0条评论