好文档 - 专业文书写作范文服务资料分享网站

使用telnet协议来收发邮件(SMTP和POP3)

天下 分享 时间: 加入收藏 我要投稿 点赞

帮5买

第一部分邮件传输协议

SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)定义了邮件客户端软件与SMTP服务器之间,以及两台SMTP服务器间的通信规则。SMTP服务器之间的通信规则。

SMTP协议中一共定义了18条命令,发送一封电子邮件的过程通常只需要使用其中6条命令,表1中按照发送命令的

表1

SMTP命令及格式 ehlo 说明 ehlo命令是SMTP邮件发送程序与SMTP邮件接收程序建立连接后必须发送的第一条SMTP命令。参数表示SMTP邮件发送者的主机名。 ehlo命令用于替代传统SMTP协议中的helo命令 auth 如果SMTP邮件接收程序需要SMTP邮件发送程序进行认证时,它会向SMTP邮件发送程序提示它所采用的认证方式,SMTP邮件发送程序接着应该使用这个命令回应SMTP邮件接收程序,参数表示回应的认证方式,通常是SMTP邮件接收程序先前提示的认证方式。 mailfrom: reptto: 此命令用于指定邮件发送者的邮箱地址,参数表示发件人的邮箱地址。 此命令用于指定邮件接收者的邮箱地址,参数表示接收者的邮箱地址。如果邮件要发送多个接收者,那么应使用多条reptto命令来分别指定每一个接收者的邮箱地址。 data 此命令用于表示SMTP邮件发送程序准备开始传送邮件内容,在这个命令后面发送的所有数据都将被当做邮件内容,直至遇到“.”标志符,则表示邮件内容结束。 quit

此命令表示要结束邮件发送过程,SMTP邮件接收程序接收到此命令后,将关闭与SMTP邮件发送程序的网络连接。 对于SMTP邮件发送程序发送的每一条命令,SMTP邮件程序接收程序都将回应一条响应信息。每条响应信息都以一先后顺序列出了这6条命令,并描述了其语法格式及功能说明,其中,代表空格,代表回车和换行。

个响应状态码开发如下所示: 250 ok

响应状态吗用于表示SMTP服务器对请求命令的处理结果和状态,它是一个三位的十进制数。响应状态码的最高位数字代表了不同的分类,当其为2时表示命令执行成功,为5时表示命令执行失败。为3时表示命令没有完成。

动手实践: 借助telnet程序手工发送邮件

1) 2) 3)

在sina(http://www.sina.com)中申请两个电子邮件地址,笔者在使用的两个邮箱分别为jspdevelop@sina.com和fpwjp@sina.com,第一个邮箱的登录为:javamail,读者应注册自已的电子邮箱进行实验。

要给某个SMTP服务器发送邮件,首先要获知该SMTP服务器的主机名,其中新浪的SMTP服务器主机名为smtp.sina.com 25。

当SMTP服务器要对邮件客户端软件进行用户身份验证时,邮件客户端软件需要对用户名和密码进行BASE64编码后再传递给SMTP服务器,因此要编写一个能对用户名和密码进行BASE64编码的工具程序。下面是用Java语言编写的一个对用户名和密码分别进行BASE64编码的工具程序。

例:BASE64Util.java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import sun.misc.BASE64Encoder; class BASE64Util {

帮5买

帮5买

}

启动windows命令行窗口,编译并运行这个Java程序,接着根据程序的提示输入已注册的sina邮箱的用户名和密码。如图1-1所示。

public static void main(String[] args) throws IOException { }

System.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();

System.out.println(\编码后的用户名为:\System.out.println(\编码后的密码为:\

图1-1

4)

重新开启一个windows命令行窗口,使用telnet命令连接到sina的SMTP服务器的25号端口,即在命令行窗口中输入如下一行内容。

telnet smtp.sina.com 25

该命令的正常执行结果如图1-2所示。

图1-2

图1-2中显示的内容是smtp.sina.com服务器返回给客户端的响应信息,其中包含三部分内容,各部分的意义如下: ? ? ?

220是邮件服务器返回给客户的响应状态码,它表示邮件服务器准备就绪(service ready)。 smtp.sina.com表示当前进行的响应的邮件服务器的主机名。 ESMTP表示当前邮件服务器支持扩展SMTP协议。

帮5买

帮5买

5)

SMTP发送者程序与SMTP接收者程序建立连接后,接着应该使用ehlo命令向SMTP接收程序发送问候信息。由于当前运行Telnet程序的计算机根本就没有在Internet上注册的主机名,所以这里随便使用一个名称(jspdevelop)来表示ehlo命令中主机名。发送ehlo命令后,邮件服务器返回如图1-3所示的结果。

图1-3

6)

在图1-3中接着输入如下一行命令: auth login

SMTP服务器返回如图1-4所示的响应信息。

图1-4

SMTP服务器返回的响应状态码为334,它表示SMTP服务器正在等待客户端输入认证信息。这时将命令行窗口中,选中经过BASE64编码后得到的用户名,复制过来,然后将BASE64编码的密码复制过来,完成认证后的结果如图1-5所示。

帮5买

帮5买

图1-5

7)

接着输入mail from命令,将邮件发送者的地址填写为在sina上注册的邮箱地址jspdevelop@sina.com,执行效果如图1-6所示。

mail from:

邮件服务器返回一个250的响应状态码,代表当前操作执行成功。

图1-6

注意:SMTP协议不要求SMTP邮件接收服务器对mail from命令后面输入的邮件地址进行验证,也就是说,mail from命令后面的邮件地址可以不是发件人的真实邮箱地址,而可以是其他人的邮箱地址。 8)

接着输入rept to命令,将邮件接收者的地址填写收件的邮箱地址fpwjp@sina.com,执行效果如图1-7所示: rept to: 帮5买

帮5买

图1-7

9)

邮件服务器返回一个250的响应状态码,代表当前操作执行成功。SMTP协议允许在一个连接通道中执行多条rept to接着输入data命令,表示后面将传送邮件内容。邮件服务器返回354的响应状态码,并等待客户端输入邮件内容。接着输入邮件内容。最后在单独的一行上输入一个“.”作为邮件内容的结束标记,如图1-8所示。 命令,每一条命令分别指定一个邮件接收者,这样就可以把一封邮件同时发送给多个发收件人。如果图

图1-8 帮5买

使用telnet协议来收发邮件(SMTP和POP3)

帮5买第一部分邮件传输协议SMTP(SimpleMailTransferProtocol,简单邮件传输协议)定义了邮件客户端软件与SMTP服务器之间,以及两台SMTP服务器间的通信规则。SMTP服务器之间的通信规则。SMTP协议中一共定义了18条命令,发送一封电子邮件的过程通常只需要使用其中6条命令,表1中按照发送命令的表
推荐度:
点击下载文档文档为doc格式
3cp8638eio8az803iuq0
领取福利

微信扫码领取福利

微信扫码分享