网站运营
位置:首页>> 网站运营>> 用Java编程实现SMTP服务器功能(4)

用Java编程实现SMTP服务器功能(4)

 来源:asp之家 发布时间:2010-03-13 18:46:00 

标签:smtp服务器,java服务器

3.SmtpMail 类的实现

  采用Open()方法,建立与邮件服务器之间的TCP/IP 连接,创建套接字,并且得到发送命令所用的输出流Send 和接收服务器相应所用的输入流Rev。Open()方法的代码如下:

public int open(String serverName, int port){
try{
mailSocket = new Socket(serverName, port);
send = new PrintWriter(mailSocket.getOutputStream(), true);
recv = new BufferedReader(new InputStreamReader(mailSocket.getInputStream()));
String s1 = recv.readLine();
char c = s1.charAt(0);
if((c == '4') | (c == '5'))
return 0;
}
catch(Exception e){
return 0;
}
return 1;
}


  在SmtpMail 类中,通过Transmit()方法完成发送任务。Transmit()方法的代码如下:

public int transmit(){
boolean flag = true;
//发送HELO 命令
if(domain.length() != 0){
int i = sendString("HELO " + domain);
if(i != 1)
return 0;
}
//发送MAIL FROM 命令(发件人)
if(from.length() != 0){
int j = sendString("MAIL FROM:" + from);
if(j != 1)
return 0;
}
//发送RCPT TO 命令(收件人)
if(to.length() != 0){
int k = sendString("RCPT TO:" + to);
if(k != 1)
return 0;
}
//发送邮件正文(DATA 命令)
if(sendString("DATA") != 1)
return 0;
//发送邮件头信息
for(int l = 0; l < x_set.size(); l += 2){
String s = (String)x_set.elementAt(l);
send.println(s + ": " + x_set.elementAt(l + 1));
}
//发送时间及相关内容格式说明
if(x_set.indexOf("Date") < 0)
send.println("Date: " + (new Date()).toString());
........
........


  使用SendString()方法来发送字符串命令,并且接收邮件服务器的响应信息,判断命令是否被接收。返回1表示命令被拒绝执行,返回0表示命令被接受。SendString()方法的代码如下:

private int sendString(String s){
String s1 = "";
try{
send.println(s);
s1 = recv.readLine();
}
catch(Exception e){
System.out.print(s1);
return 0;
}
if(s1.length() == 0)
return 0;
char c = s1.charAt(0);
return !((c == '4') | (c == '5')) ? 1 : 0;
}


  使用Close()方法来关闭与服务器之间的套接字连接。该方法发送“QUIT”命令,收到响应消息后,才真正关闭连接。Close()方法的代码如下:

public int close(){
int i = 0;
try{
i += sendString("QUIT");
mailSocket.close();
}
catch(Exception e){
return 0;
}
return i == 0 ? 1 : 0;
}

0
投稿

猜你喜欢

  • 我们建立博客的初衷是记录、分享工作、生活、技术等方面知识,也有人写博客是为了装逼。但最终能够坚持下来的却少之又少。主要原因是从起初的单相思到
  • 对搜索的讨论一直很多,也看过很多关于搜索的文章.对于目前搜索方式的利于弊,在日常搜索过程中其实我们还是有很多体会的.纵看搜索的发展史:第一代
  • 最近因为比较清闲,不断有朋友问关于网站制作、运营和推广方面的问题,基本上所有人都有一个很兴奋的表情,大谈他们关于想做的网站的内容,绝大多数人
  • 做网赚就要有一定的心态,如果心态不对,往往会走很多的弯路,甚至最后无奈的放弃。芝麻认为,不仅仅的做网赚,做任何事情都要先确定好心态再继续,否
  • 前言对于开发者来说,安装jdk按理说是非常简单的事,但在linux下安装着实费了我这个一直玩windows的小白不少劲。这里简单把步骤梳理下
  • 浏览器的漏洞和恶意脚本程序导致了cookie信息的泄漏,与cookie信息泄漏不同,URL会话信息被泄漏,则是完全出在HTTP协议上,除非修
  • 有用户问Godaddy怎么把iTunes RSS重新定位到另一位置呢?现在我们就来解决这一问题。如果你想把某个RSS feed重新定位到另外
  • 随着Linux企业应用的扩展,有大量的网络服务器使用Linux操作系统。Linux服务器的安全性能受到越来越多的关注,这里根据Linux服务
  • 如果你有自己的主页,需要经常将自己制作的网页文件上传到几个固定的站点,相信你一定会喜欢下面介绍的“可以编程序&r
  • 北京时间11月4日消息:据美国《纽约时报》引述消息人士报道,围绕Skype的法律和转让纠纷有望终结,Skype的创始人和eBay以及收购方接
  • DoS即Denial Of Service,拒绝服务的缩写。DoS是指故意攻击网络协议实现的缺陷,或直接通过野蛮手段耗尽被攻击对象的资源,目
  • Godaddy主机用户怎样使用File Manager删除一个目录呢?下面我来简单的讲解下:首先、 登陆你的Account Manager.
  • 站长在提交备案时要注意以下细节:1。备案主体,个人网站就是姓名,身份证最好是没提交过备案的,不然再次提交会提示冲突。公司网站一定要以公司名义
  • 网站用户的回头率高与低,是非常重要的!我们不应该指望每位访客都会再回来,但是,我们应当做到让潜在的访客不定期的再回访,同时,回访的访客也是会
  • 前言现在Linux系统中基于xinetd的服务越来越少了,但Linux系统中还是有基于xinetd的服务的,所以我们还是需要了解一下基于xi
  • 这篇文章仅献给那些对服务器管理不重视的朋友,春节期间,大家忙着旅游,打牌,逛亲戚等。你可晓得,黑客此时正在琢磨着,怎么在你的服务器上挂马!由
  • 很多人做网站,有人成功,但是更多人失败,这是为什么?我觉得做网站,从事网赚行业—贵在坚持!现在搭建网站很容易,网络上一大把CMS建站系统任你
  • 问题:使用GetArticleList标签,,显示的时间比较长时会换行解决方法。 解决方法:这里只要修改下文件即可,找到 Include/P
  • 虚拟机使用PuTTY、SSH Secure Shell Client前的配置1 仅主机模式 2 检查子网IP为192.168.15
  • 一、概念Docker 端口映射即映射容器内应用的服务端口到本机宿主机器。二、实现当容器中运行一些网络应用,要让外部访问这些应用时,可以通过
手机版 网站运营 asp之家 www.aspxhome.com