常用邮件协议及其命令行使用
来源:互联网 发布:全自动胶印机的编程 编辑:程序博客网 时间:2024/05/17 23:18
本文主要介绍邮件的发送接收协议,以及邮件的收发过程,并且通过命令行的形式登录SMTP服务器和POP3服务器,以便熟悉常用的命令,了解各个命令使用过程,这样为了更好的理解mail的开发过程有很大的帮助,以便更好的使用JavaMail中的API进行邮件系统的开发。
一、常用邮件协议介绍
SMTP协议(Simple Mail Tranfer Protocol)
- 端口号:25, 定义邮件客户端(UA, User Agent)与SMTP服务器之间,以及两台SMTP服务器之间的通信规则。
POP3协议(Post Office Protocol)
- 端口号:110 邮局协议,定义了客户端软件与POP3服务器的通信规则。
IMAP协议(Internet Message Access Protocol)
- Internet消息访问协议,它是POP3协议的一种扩展,也是定义了邮件客户端软件与邮件服务器的通信规则。
图1:本图来自《JavaMail开发详解》
二、SMTP、POP3命令详解
2.1 SMTP常用命令
本小节中使用的6个命令时发送一个邮件最常使用的命令,在SMTP的RFC文档中定义了18个命令,具体的可以查看标准文档。
auth <login | plain> 当使用ehlo后,SMTP服务器会返回相应的命令其中含有认证的方式,通常有login、plain两种,我们使用auth login之后就可以直接输入用户名和密码即完成的登录(需要注意的是要使用base64编码后的用户名、密码才可以登录)mail from: <xx@xx.com>
此命令用于指定邮件发送者的邮箱地址,参数<xx@xx.com>表示发件人的邮箱地址。
在使用data之后就可以填写邮件的内容包括from、to、subject,则三项内容是可选的,但却是在实际的邮件中显示用到的,因此并不要求mail from中的内容和from中的内容相同,因此不能仅仅从from中的邮件内容就判定它一定是from所指定的邮件发过来的,它可能是使用mial from的用户将其from中的内容进行修改发送出去的结果,因此这里面就有可能出现邮件的真实性确认需要注意这方面的问题。
问题:在使用mail from和rcpt to命令发送一封邮件之后,在继续使用rcpt to命令是否可以再一次发送一封邮件呢?
答:不行,必须按照这个顺序再一次输入命令,要是发送多个邮件可以使用多个rcpt to来指定。
2.2 POP3常用命令
使用POP3登录是用于查看服务器中自己的邮件可以读取邮件,删除邮件等操作,下面的列表中给出了常用的命令。POP3的RFC文档中共定义了12条命令。
pass password pass命令是在user命令成功通过后,POP3客户端程序接着发送的命令,它用于传递帐户的密码,参数password表示帐户的密码。statstat命令用于查询邮箱中的统计信息,例如,邮箱中有邮件数和邮件占用的字节大小等。uidl msg#uidl命令用于查询某封邮件的唯一标识符,参数msg#表示邮件的序号,是一个从1开始编号的数字。
list [msg#]list命令用于列出邮箱中的邮件信息,参数msg#是一个可选参数,表示邮件的序号。当不指定参数时,POP3服务器列出邮箱中所有的邮件信息;当指定参数msg#时,POP3服务器只返回该序号对应的邮件的信息。retr msg#list命令用于获取某封邮件的内容,参数msg#表示邮件的序号。
dele msg#dele命令用于在某封邮件上设置删除标记,参数msg#表示邮件的序号。POP3服务器执行dele命令时,只是为邮件设置了删除标记,并没有真正把邮件删除掉,只有POP3客户端程序发出quit命令后,POP3服务器才会真正删除所有设置了删除标记的邮件。resetrset命令用于清除所有邮件的删除标记。
top msg#top命令用于获取某封邮件的邮件头和邮件体中的前n行内容,参数msg#表示邮件的序号,参数n表示要返回邮件的前几行内容。使用这条命令以提高Web Mail系统(通过Web站点上收发邮件)中的邮件列表显示的处理效率,因为这种情况下不需要获取每封邮件的完整内容,而是仅仅需要获取每封邮件的邮件头信息。noopnoop命令用于检测POP3客户端与POP3服务器的连接情况。
apop name, digestapop命令用于替代user和pass命令,它以MD5数字摘要的形式向POP3邮件服务器提交帐户密码。quit quit命令表示要结束邮件接收过程,POP3服务器接收到此命令后,将删除所有设置了删除标记的邮件,并关闭与POP3客户端程序的网络连接。
这里需要说明的是使用dele命令并不会立即删除邮件而是将邮件标记为删除,要使用reset命令才能从服务器中删除邮件。
需要知道SMTP、POP3命令对于邮件开发非常有用,因为JavaMail的API就是根据这些命令接口实现相应的API通过将接口同一抽象出来即为我们所使用的JavaMail的API。当然除此之外还是不够的还需要了解MIME的邮件结构这样才有助于邮件的内容分析以及相关的程序调试。
0 0
- 常用邮件协议及其命令行使用
- 使用邮件相关协议进行命令行收信与发信
- 常用邮件协议
- thunderbird 使用命令行发邮件
- centsos 使用命令行发送邮件
- 常用网络协议及其端口
- Linux下常用命令行及其参数整理
- 使用SMTP协议发送邮件
- 使用smtp协议发送邮件
- 常用控件及其使用
- SMTP协议--在cmd下利用命令行发送邮件
- 利用命令行使用smtp发送邮件
- 使用blat在命令行下发送邮件
- 常用端口及其所代表的协议
- mysql常用命令行使用入门
- maven常用命令行的使用
- flex使用smtp协议发邮件
- VBS使用SMTP协议发送邮件
- BroadcastReceiver应用详解
- freebsd下服务硬件性能测试
- Sample Mean Shift 样本均值漂移原理
- js语法
- WCF REST 工作总结(一)
- 常用邮件协议及其命令行使用
- Ubuntu配置和修改IP地址
- ubuntu卸载软件
- iOS常用静态库操作命令
- 星韵
- 简单公司主页全静态设计
- 1.CCTargetedTouch
- StringUtils下的isEmpty、isBlank、isNotEmpty、isNotBlank
- CTRL+Z的ascii码是多少