用telnet通过smtp和pop收发邮件.doc
文本预览下载声明
用telnet通过smtp/pop3发送/接收邮件
ghy
SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)定义了邮件客户端软件与SMTP服务器之间,以及两台SMTP服务器间的通信规则。SMTP服务器之间的通信规则。
SMTP协议中一共定义了18条命令,发送一封电子邮件的过程通常只需要使用其中6条命令,表1中按照发送命令的先后顺序列出了这6条命令,并描述了其语法格式及功能说明,其中,SP代表空格,CRLF代表回车和换行。
SMTP命令及格式 说明 HELOSPdomainCRLF ehlo命令是SMTP邮件发送程序与SMTP邮件接收程序建立连接后必须发送的第一条SMTP命令。参数domain表示SMTP邮件发送者的主机名。
ehlo命令用于替代传统SMTP协议中的helo命令 authSPparaCRLF 如果SMTP邮件接收程序需要SMTP邮件发送程序进行认证时,它会向SMTP邮件发送程序提示它所采用的认证方式,SMTP邮件发送程序接着应该使用这个命令回应SMTP邮件接收程序,参数para表示回应的认证方式,通常是SMTP邮件接收程序先前提示的认证方式。 mailSPfrom:reverse-pathCRLF 此命令用于指定邮件发送者的邮箱地址,参数reverse-path表示发件人的邮箱地址。 reptSPto:forword-pathCRLF 此命令用于指定邮件接收者的邮箱地址,参数forword-path表示接收者的邮箱地址。如果邮件要发送多个接收者,那么应使用多条reptSPto命令来分别指定每一个接收者的邮箱地址。 dataCRLF 此命令用于表示SMTP邮件发送程序准备开始传送邮件内容,在这个命令后面发送的所有数据都将被当做邮件内容,直至遇到“CRLF.CRLF”标志符,则表示邮件内容结束。 quitCRLF 此命令表示要结束邮件发送过程,SMTP邮件接收程序接收到此命令后,将关闭与SMTP邮件发送程序的网络连接。
当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
{
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(编码后的用户名为:+encoder.encode(userName.getBytes()));
System.out.println(编码后的密码为:+encoder.encode(password.getBytes()));
}
}
发送邮件命令
telnet 25 (用telnet登陆25端口)
HELO guhaiyue (客户端发送HELO命令以标识发件人自己的身份telnet登录110端口
命令输入后邮箱服务器返回的信息如下,表示操作成功:
总结:
最好将所有的命令写好放在一个txt文件中,在需要输入的时候采取复制粘贴的方式,这样不容易出错,否则,即使是很简短的命令也有可能出错,进而影响我们的效率。
HELO guhaiyue中“HELO”之后的字符串可以自由选择。
发送邮箱的用户名和密码需要经过转码,但是收件邮箱的用户名和密码不需要转码。
发送的内容以“回车+.+回车”,也就是先回车,再点(.),最后回车,表示内容输入完毕。
收件箱编号大的是最新收到的。
因为163邮箱默认开通了pop3/smtp
显示全部