文档介绍:2018年5月29日
广州大学 Java网络编程主讲:刘淼
1
电子邮件应用编程
2018年5月29日
广州大学 Java网络编程主讲:刘淼
2
内容
SMTP协议编程
POP3协议编程
学习目标
     明确两种协议的内容
命令
响应代码
掌握邮件协议的应用编程模式,并能灵活运用
2018年5月29日
广州大学 Java网络编程主讲:刘淼
3
概述
电子邮件应用编程模式
遵循传统的客户/服务器模式
不同之处
在传统的通信过程中,通信的主体是软件进程,通信过程中要建立通信连接,通信的两端都正在运行。
在电子邮件通信中,通信的主体是人,发信人和收信人不可能保证同时在线,收信人也不可能总是用同一台机器收发邮件。
2018年5月29日
广州大学 Java网络编程主讲:刘淼
4
概述
因此,必须借鉴传统的信件通信模式。
延迟递交模式。
因特网上电子邮件通信过程
见讲义图1
2018年5月29日
广州大学 Java网络编程主讲:刘淼
5
电子邮件消息格式
电子邮件消息格式采用文本字段定义
电子邮件是供人阅读的
由信封和电子邮件报文两部分构成
电子邮件报文由报文头和消息主体构成
报文头由一系列字段名称和相应取值构成
消息主体就是实际发送的消息内容
信封一般由MUA和MTA从报文头中抽取部分与传递邮件相关的字段内容构成
电子邮件消息格式就是指电子邮件头字段名称、相应语义和编码格式
2018年5月29日
广州大学 Java网络编程主讲:刘淼
6
电子邮件格式有RFC822格式和MIME(Multipurpose Mail Extensions)格式
2018年5月29日
广州大学 Java网络编程主讲:刘淼
7
RFC822格式
名称的由来
1982年,IETF发布了RFC821和RFC822文档。RFC821文档定义了SMTP协议,RFC822文档规定了电子邮件的格式。2001年,IETF发布了RFC2821文档和RFC2822文档,分别更新了RFC821和RFC822文档。由于前后两个定义电子邮件格式的RFC文档的编号后3位数都是822,所以这种电子邮件格式名称就称为RFC822格式。
2018年5月29日
广州大学 Java网络编程主讲:刘淼
8
RFC822格式
RFC822格式规定电子邮件头和消息内容采用ASCII码编码方式,每行由回车(CR)和换行(LF)结尾,建议每行长度在80字符以内,最长不超过1000个字符,电子邮件头和消息内容用一个空行隔开。
RFC822格式的头字段的名称及说明
见下表
2018年5月29日
广州大学 Java网络编程主讲:刘淼
9
字段名称
说明
Date
必需。电子邮件的发送日期和时间。
From
必需。电子邮件作者的地址。
Sender
可选。发送电子邮件的地址。
Reply-To
可选。接收者的回复地址,缺省为From字段的值。
To
通常出现。接收者的邮件地址,可能有多个值。
CC
可选。抄送的邮件邮件地址,可能有多个值。
Bcc
可选。盲抄送的邮件邮件地址,可能有多个值。接收者和抄送者不知道电子邮件盲抄送的地址。
Message-ID
可选。电子邮件识别号,通常由MUA或MTA自动产生。
In-Reply-To
可选。当邮件为回复邮件时,该字段的值为被回复的邮件识别号。
References
可选。定义了与邮件相关的其它文档信息。
Subject
通常出现。邮件的主题信息。
Comments
可选。包含与该邮件相关的评论。
Keywords
可选。其值为逗号分隔的关键词,用于邮件查找。
Resent*
当重发邮件时必需。以Resent开头后接字段名,指重发时的相关字段信息。
Received
Return-Path
由MTA自动插入,用来跟踪邮件经过的SMTP服务器。
2018年5月29日
广州大学 Java网络编程主讲:刘淼
10
MIME格式
为什么出现MIME格式?
RFC822格式只能适用于纯英文形式的文本邮件
当发送的信息或头字段的值包含有非英语文字,包含有图象、声音及可执行文件等其他文件形式时,怎么办?
新的邮件格式是重新从零开始还是以RFC822格式为基础来定义新的格式呢?
RFC822格式出现已经有很长时间了,许多邮件软件的开发都是以RFC822格式为基础,所以,新的格式最好采用ASCII来编码上述的非英语文字和多媒体等数据,这就是MIME,中文可读为多用途因特网邮件扩展。