使用telnet协议来收发邮件(smtp和pop3)

上传人:ldj****22 文档编号:37627208 上传时间:2018-04-20 格式:DOC 页数:10 大小:184KB
返回 下载 相关 举报
使用telnet协议来收发邮件(smtp和pop3)_第1页
第1页 / 共10页
使用telnet协议来收发邮件(smtp和pop3)_第2页
第2页 / 共10页
使用telnet协议来收发邮件(smtp和pop3)_第3页
第3页 / 共10页
使用telnet协议来收发邮件(smtp和pop3)_第4页
第4页 / 共10页
使用telnet协议来收发邮件(smtp和pop3)_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《使用telnet协议来收发邮件(smtp和pop3)》由会员分享,可在线阅读,更多相关《使用telnet协议来收发邮件(smtp和pop3)(10页珍藏版)》请在金锄头文库上搜索。

1、帮帮 5 买买帮帮 5 买买第一部分邮件传输协议第一部分邮件传输协议SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)定义了邮件客户端软件与 SMTP 服务器之间,以及两台 SMTP 服务器间的通信规则。SMTP 服务器之间的通信规则。SMTP 协议中一共定义了 18 条命令,发送一封电子邮件的过程通常只需要使用其中 6 条命令,表 1 中按照发送命令的先后顺序列出了这 6 条命令,并描述了其语法格式及功能说明,其中,代表空格,代表回车和换行。表表 1SMTP 命令及格式命令及格式说明说明ehloehlo 命令是命令是 SMTP 邮件发送程序与邮件发送程序

2、与 SMTP 邮件接收程序建立连接后必须发送邮件接收程序建立连接后必须发送的第一条的第一条 SMTP 命令。参数命令。参数表示表示 SMTP 邮件发送者的主机名。邮件发送者的主机名。ehlo 命令用于替代传统命令用于替代传统 SMTP 协议中的协议中的 helo 命令命令auth如果如果 SMTP 邮件接收程序需要邮件接收程序需要 SMTP 邮件发送程序进行认证时,它会向邮件发送程序进行认证时,它会向SMTP 邮件发送程序提示它所采用的认证方式,邮件发送程序提示它所采用的认证方式,SMTP 邮件发送程序接着应邮件发送程序接着应该使用这个命令回应该使用这个命令回应 SMTP 邮件接收程序,参数邮

3、件接收程序,参数表示回应的认证方式,表示回应的认证方式,通常是通常是 SMTP 邮件接收程序先前提示的认证方式。邮件接收程序先前提示的认证方式。mailfrom:此命令用于指定邮件发送者的邮箱地址,参数此命令用于指定邮件发送者的邮箱地址,参数表示发件人的邮表示发件人的邮箱地址。箱地址。reptto:此命令用于指定邮件接收者的邮箱地址,参数此命令用于指定邮件接收者的邮箱地址,参数表示接收者的邮表示接收者的邮箱地址。如果邮件要发送多个接收者,那么应使用多条箱地址。如果邮件要发送多个接收者,那么应使用多条 reptto 命令来分命令来分别指定每一个接收者的邮箱地址。别指定每一个接收者的邮箱地址。da

4、ta此命令用于表示此命令用于表示 SMTP 邮件发送程序准备开始传送邮件内容,在这个命令后邮件发送程序准备开始传送邮件内容,在这个命令后面发送的所有数据都将被当做邮件内容,直至遇到面发送的所有数据都将被当做邮件内容,直至遇到“.”标标志符,则表示邮件内容结束。志符,则表示邮件内容结束。quit此命令表示要结束邮件发送过程,此命令表示要结束邮件发送过程,SMTP 邮件接收程序接收到此命令后,将邮件接收程序接收到此命令后,将关闭与关闭与 SMTP 邮件发送程序的网络连接。邮件发送程序的网络连接。对于 SMTP 邮件发送程序发送的每一条命令,SMTP 邮件程序接收程序都将回应一条响应信息。每条响应信

5、息都以一个响应状态码开发如下所示:250 ok响应状态吗用于表示 SMTP 服务器对请求命令的处理结果和状态,它是一个三位的十进制数。响应状态码的最高位数字代表了不同的分类,当其为 2 时表示命令执行成功,为 5 时表示命令执行失败。为 3 时表示命令没有完成。动手实践动手实践: 借助 telnet 程序手工发送邮件1)在 sina(http:/)中申请两个电子邮件地址,笔者在使用的两个邮箱分别为 和,第一个邮箱的登录为:javamail,读者应注册自已的电子邮箱进行实验。2)要给某个 SMTP 服务器发送邮件,首先要获知该 SMTP 服务器的主机名,其中新浪的 SMTP 服务器主机名为 2

6、5。3)当 SMTP 服务器要对邮件客户端软件进行用户身份验证时,邮件客户端软件需要对用户名和密码进行 BASE64编码后再传递给 SMTP 服务器,因此要编写一个能对用户名和密码进行 BASE64 编码的工具程序。下面是用Java 语言编写的一个对用户名和密码分别进行 BASE64 编码的工具程序。例:BASE64Util.javaimport java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import sun.misc.BASE64Encoder;class BASE64

7、Util 帮帮 5 买买帮帮 5 买买public static void main(String args) throws IOExceptionSystem.out.println(“请输入用户名:“);BufferedReader in=new BufferedReader(new InputStreamReader(System.in);String userName=in.readLine();System.out.print(“请输入密码:“);String password=in.readLine();BASE64Encoder encoder=new BASE64Encoder

8、();System.out.println(“编码后的用户名为:“+encoder.encode(userName.getBytes();System.out.println(“编码后的密码为:“+encoder.encode(password.getBytes();启动 windows 命令行窗口,编译并运行这个 Java 程序,接着根据程序的提示输入已注册的 sina 邮箱的用户名和密码。如图 1-1 所示。图图 1-14)重新开启一个 windows 命令行窗口,使用 telnet 命令连接到 sina 的 SMTP 服务器的 25 号端口,即在命令行窗口中输入如下一行内容。telnet

9、 25该命令的正常执行结果如图 1-2 所示。图图 1-2图 1-2 中显示的内容是 服务器返回给客户端的响应信息,其中包含三部分内容,各部分的意义如下:220 是邮件服务器返回给客户的响应状态码,它表示邮件服务器准备就绪(service ready)。 表示当前进行的响应的邮件服务器的主机名。ESMTP 表示当前邮件服务器支持扩展 SMTP 协议。帮帮 5 买买帮帮 5 买买5)SMTP 发送者程序与 SMTP 接收者程序建立连接后,接着应该使用 ehlo 命令向 SMTP 接收程序发送问候信息。由于当前运行 Telnet 程序的计算机根本就没有在 Internet 上注册的主机名,所以

10、这里随便使用一个名称(jspdevelop)来表示ehlo 命令中主机名。发送 ehlo 命令后,邮件服务器返回如图 1-3 所示的结果。图图 1-36)在图 1-3 中接着输入如下一行命令:auth loginSMTP 服务器返回如图 1-4 所示的响应信息。图图 1-4SMTP 服务器返回的响应状态码为 334,它表示 SMTP 服务器正在等待客户端输入认证信息。这时将命令行窗口中,选中经过 BASE64 编码后得到的用户名,复制过来,然后将 BASE64 编码的密码复制过来,完成认证后的结果如图 1-5所示。帮帮 5 买买帮帮 5 买买图图 1-57)接着输入 mail from 命令,

11、将邮件发送者的地址填写为在 sina 上注册的邮箱地址 ,执行效果如图1-6 所示。mail from:邮件服务器返回一个 250 的响应状态码,代表当前操作执行成功。图图 1-6注意:SMTP 协议不要求 SMTP 邮件接收服务器对 mail from 命令后面输入的邮件地址进行验证,也就是说,mail from 命令后面的邮件地址可以不是发件人的真实邮箱地址,而可以是其他人的邮箱地址。8)接着输入 rept to 命令,将邮件接收者的地址填写收件的邮箱地址 ,执行效果如图 1-7 所示:rept to:帮帮 5 买买帮帮 5 买买图图 1-7邮件服务器返回一个 250 的响应状态码,代表当

12、前操作执行成功。SMTP 协议允许在一个连接通道中执行多条 rept to命令,每一条命令分别指定一个邮件接收者,这样就可以把一封邮件同时发送给多个发收件人。如果图9)接着输入 data 命令,表示后面将传送邮件内容。邮件服务器返回 354 的响应状态码,并等待客户端输入邮件内容。接着输入邮件内容。最后在单独的一行上输入一个“.”作为邮件内容的结束标记,如图 1-8 所示。图图 1-8帮帮 5 买买帮帮 5 买买10)接着输入 quit 命令,结束整个邮件的传输过程。SMTP 服务器接收到客户端发送的 quit 命令后,将断开与客户端的网络连接,Telnet 程序结束运行,windows 命令

13、行窗口退回到 DOS 提示符状态。11)登录到 fpwjp 邮件中来查看刚才发送的邮件。使用 OutLook Express 收取这封邮件的效果如图 1-9 所示。图图 1-9第二部分第二部分 POP3 协议协议POP3(Post Office Protocol)协议定义了邮件客户端程序与 POP3 服务器进行通信。POP3 协议,它采用的网络监听端口号默认为 110。POP3 协议共定义了 12 条 POP3 命令,邮件客户端程序通过这些命令检索和获取用户电子邮箱中的邮件信息。表 2 中列举出了这 12 条 POP3 命令及其说明,其中,代表空格,代表回车和换行。表表 2命令及其使用格式命令

14、及其使用格式说明说明userusernameuser 命令是命令是 POP3 客户端程序与客户端程序与 POP3 邮件服务器建立连接通常发送的第一条邮件服务器建立连接通常发送的第一条命令,参数命令,参数 username 表示收件人账户名称。表示收件人账户名称。passpasswordPass 命令是在命令是在 user 命令成功通过后,命令成功通过后,POP3 客户端程序接着发送的命令,它用客户端程序接着发送的命令,它用于传递账户的密码,参数于传递账户的密码,参数 password 表示账户的密码。表示账户的密码。apopname.digestApop 命令用于替代命令用于替代 user 和

15、和 pass 命令,它以命令,它以 MD5 数字摘要的形式向数字摘要的形式向 POP3 邮件邮件服务器提交账户密码。服务器提交账户密码。statstat 命令用于查询邮箱中的统计信息,例如,邮箱中有邮件数和邮件占用的字节命令用于查询邮箱中的统计信息,例如,邮箱中有邮件数和邮件占用的字节大小等。大小等。uidlmsg#uidl 命令用于查询某封邮件的唯一标志符,参数命令用于查询某封邮件的唯一标志符,参数 msg#表示邮件的序号,是一个表示邮件的序号,是一个1 开始编号的数字。开始编号的数字。listmsg#List 命令用于列出邮箱中邮件信息,参数命令用于列出邮箱中邮件信息,参数 msg#是一个

16、可选参数,表示邮件的序是一个可选参数,表示邮件的序号。当不指定参数时,号。当不指定参数时,POP3 服务器列出邮箱中所有的邮件信息,当指定参数服务器列出邮箱中所有的邮件信息,当指定参数msg#时,时,POP3 服务器只返回该号对应的邮件的信息。服务器只返回该号对应的邮件的信息。rertmsg#list 命令用于获取某封邮件的内容,参数命令用于获取某封邮件的内容,参数 msg#表示邮件的序号。表示邮件的序号。帮帮 5 买买帮帮 5 买买delemsg#Dele 命令用于在某封邮件上设置删除标记,参数命令用于在某封邮件上设置删除标记,参数 msg#表示邮件的序号。表示邮件的序号。POP3服务器执行服务器执行 dele 命令时,只是为邮件设置了删除标记,并没有真正把邮件删除命令时,只是为邮件设置了删

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号