用Java实现SMTP服务器

豆豆网   技术应用频道   2006年11月14日  【字号: 收藏本文

本文详细介绍用Java实现SMTP服务器

privateintsendString(Strings){
Strings1="";
try{
send.println(s);
s1=recv.readLine();
}
catch(Exceptione){
System.out.print(s1);
return0;
}
if(s1.length()==0)
return0;
charc=s1.charAt(0);
return!((c=='4')|(c=='5'))?1:0;
}

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

publicintclose(){
inti=0;
try{
i+=sendString("QUIT");
mailSocket.close();
}
catch(Exceptione){
return0;
}
returni==0?1:0;
}

  mailSendFrame.java源程序代码如下:

importjava.awt.*;
importjava.awt.event.*;
publicclassmailSendFrameextendsFrame{
smtpMailmailSender=newsmtpMail();
PanelpanelMain=newPanel();
PanelpanelUp=newPanel();
Panelpanel3=newPanel();
Panelpanel4=newPanel();
Panelpanel6=newPanel();
Panelpanel7=newPanel();
TextFieldtxtServer=newTextField();
TextFieldtxtTo=newTextField();
TextFieldtxtFrom=newTextField();
TextFieldtxtSubject=newTextField();
Panelpanel8=newPanel();
LabellblFile=newLabel();
ButtoncmdBrowse=newButton();
PanelpanelDown=newPanel();
TextAreatxtMail=newTextArea();
Panelpanel10=newPanel();
ButtoncmdSend=newButton();
ButtoncmdExit=newButton();
privateFileDialogopenFileDialog
=newFileDialog(this,"打开文件",FileDialog.LOAD);
publicmailSendFrame(){
try{
Init();
}
catch(Exceptione){
e.printStackTrace();
}
}
publicstaticvoidmain(String[]args){
mailSendFramemailSendFrame=newmailSendFrame();
DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();
DimensionframeSize=mailSendFrame.getSize();
if(frameSize.height>screenSize.height){
frameSize.height=screenSize.height;
}
if(frameSize.width>screenSize.width){
frameSize.width=screenSize.width;
}
mailSendFrame.setLocation((screenSize.width-frameSize.width)/2,
(screenSize.height-frameSize.height)/2);
mailSendFrame.setVisible(true);
mailSendFrame.show();
}
privatevoidInit()throwsException{
this.setLayout(newBorderLayout());
panelMain.setLayout(newGridLayout(2,1));
panelUp.setLayout(newGridLayout(6,1));
panel3.setLayout(newFlowLayout());
this.setVisible(true);
.......
.......
//smtpMail.java的源代码
importjava.io.*;
importjava.net.Socket;
importjava.util.*;
publicclasssmtpMail{
privatebooleansendConf=false;
publicstaticfinalintOK=1;
publicstaticfinalintERROR=0;
privatestaticfinalStringTEXT="1";
privatestaticfinalStringTFILE="2";
privatestaticfinalStringBFILE="3";
privatestaticfinalStringCPR="Java1.0";
privatestaticfinalStringMAILER="X-Mailer";
privatestaticfinalintBUFFER_SIZE=48;
privateStringDELIMETER;
privateStringSEPARATOR;
privatestaticfinalintHOW_LONG=6;
privatestaticfinalcharSMTP_ERROR_CODE1=52;
privatestaticfinalcharSMTP_ERROR_CODE2=53;
privatestaticfinalintfillchar=61;
privatestaticfinalStringcvt=
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
privateSocketmailSocket;
privateBufferedReaderrecv;
privatePrintWritersend;
privateStringfrom;
privateStringto;
privateStringdomain;
privateVectorx_set;
privateVectorbody;
privateVectorattach;
publicsmtpMail(){
DELIMETER="";
SEPARATOR="";
mailSocket=null;
recv=null;
send=null;
from="";
to="";
domain="";
x_set=newVector();
body=newVector();
attach=newVector();
DELIMETER=getId();
SEPARATOR=System.getProperty("file.separator");
}

责编:豆豆技术应用

正在加载评论...