您好,欢迎访问三七文档
电子邮件发件实验电子邮件流程用户A用户B服务器A服务器B1、用户A通过邮件客户端发送邮件到服务器A2、服务器A将邮件发送到服务器B3、用户B接受服务器B上的邮件用户A邮件发送过程•用户A客户端首先和服务器A建立TCP连接•确认之后,用户A和服务器A之间采用SMTP协议发送邮件内容•邮件内容传输完毕后,发送结束邮件客户端JAVA程序•该程序分为4部分,分别为mailclient、envelope、message、smtpconnection•Mailcilent为客户端主程序,包括使用界面、按键的定义,整个的发送流程中类的创建•message为发送邮件的内容部分,包含有发件人、收件人等内容•envelope为用于smtp协议的信息传递,包含发送接收信息以及message信息•smtpconnection为发件过程中和smtp连接的建立以及关闭发送过程中使用的指令•HELO250•MAILFROM250•RCPTTO250•DATA354•QUIT221MailClientimportjava.io.*;importjava.net.*;importjava.awt.*;importjava.awt.event.*;publicclassMailClientextendsFrame{privateButtonbtSend=newButton(Send);privateButtonbtClear=newButton(Clear);privateButtonbtQuit=newButton(Quit);privateLabelserverLabel=newLabel(Localmailserver:);privateTextFieldserverField=newTextField(,40);privateLabelfromLabel=newLabel(From:);privateTextFieldfromField=newTextField(,40);privateLabeltoLabel=newLabel(To:);privateTextFieldtoField=newTextField(,40);privateLabelsubjectLabel=newLabel(Subject:);privateTextFieldsubjectField=newTextField(,40);privateLabelmessageLabel=newLabel(Message:);privateTextAreamessageText=newTextArea(10,40);/***CreateanewMailClientwindowwithfieldsforenteringalltherelevant*information(From,To,Subject,andmessage).*/publicMailClient(){super(JavaMailClient);PanelserverPanel=newPanel(newBorderLayout());PanelfromPanel=newPanel(newBorderLayout());PaneltoPanel=newPanel(newBorderLayout());PanelsubjectPanel=newPanel(newBorderLayout());PanelmessagePanel=newPanel(newBorderLayout());serverPanel.add(serverLabel,BorderLayout.WEST);serverPanel.add(serverField,BorderLayout.CENTER);fromPanel.add(fromLabel,BorderLayout.WEST);fromPanel.add(fromField,BorderLayout.CENTER);toPanel.add(toLabel,BorderLayout.WEST);toPanel.add(toField,BorderLayout.CENTER);subjectPanel.add(subjectLabel,BorderLayout.WEST);subjectPanel.add(subjectField,BorderLayout.CENTER);messagePanel.add(messageLabel,BorderLayout.NORTH);messagePanel.add(messageText,BorderLayout.CENTER);PanelfieldPanel=newPanel(newGridLayout(0,1));fieldPanel.add(serverPanel);fieldPanel.add(fromPanel);fieldPanel.add(toPanel);fieldPanel.add(subjectPanel);/**Createapanelforthebuttonsandlistenerstothebuttons.*/PanelbuttonPanel=newPanel(newGridLayout(1,0));btSend.addActionListener(newSendListener());btClear.addActionListener(newClearListener());btQuit.addActionListener(newQuitListener());buttonPanel.add(btSend);buttonPanel.add(btClear);buttonPanel.add(btQuit);/**Add,pack,andshow*/add(fieldPanel,BorderLayout.NORTH);add(messagePanel,BorderLayout.CENTER);add(buttonPanel,BorderLayout.SOUTH);pack();show();}staticpublicvoidmain(Stringargv[]){newMailClient();}/**HandlerfortheSend-button.*/classSendListenerimplementsActionListener{publicvoidactionPerformed(ActionEventevent){System.out.println(Sendingmail);/**Checkthatwehavethelocalmailserver*/if((serverField.getText()).equals()){System.out.println(Neednameoflocalmailserver!);return;}/**确认发送者和接收者的邮件地址正确*/if((fromField.getText()).equals()){System.out.println(Needsender!);return;}if((toField.getText()).equals()){System.out.println(Needrecipient!);return;}/**Createthemessage*/MessagemailMessage=newMessage(fromField.getText(),toField.getText(),subjectField.getText(),messageText.getText());/**Checkthatthemessageisvalid,i.e.,senderandrecipientaddressslookok.*/if(!mailMessage.isValid()){System.out.println(Mailisnotvalid!);return;}Envelopeenvelope;try{envelope=newEnvelope(mailMessage,serverField.getText());}catch(UnknownHostExceptione){/**Ifthereisanerror,donotgofurther*/System.out.println(Unknownhost!);return;}try{SMTPConnectionconnection=newSMTPConnection(envelope);connection.send(envelope);connection.close();}catch(IOExceptionerror){System.out.println(Sendingfailed:+error);return;}System.out.println(Mailsendsuccessfully!);}}/**ClearthefieldsontheGUI.*/classClearListenerimplementsActionListener{publicvoidactionPerformed(ActionEvente){System.out.println(Clearingfields);fromField.setText();toField.setText();subjectField.setText();messageText.setText();}}/*Quit*/classQuitListenerimplementsActionListener{publicvoidactionPerformed(ActionEvente){System.exit(0);}}}Messageimportjava.util.*;importjava.text.*;publicclassMessage{publicStringHeaders;publicStringBody;privateStringFrom;privateStringTo;/**Tomakeitlooknicer*/privatestaticfinalStringCRLF=\r\n;/**CreatethemessageobjectbyinsertingtherequiredheadersfromRFC822(From,To,Date).*/publicMessage(Stringfrom,Stringto,Stringsubject,Stringtext){/**Removewhitespace*/From=from.trim();To=to.trim();Headers=From:+From+CRLF;Headers+=To:+To+CRLF;Headers+=Subject:+subject.trim()+CRLF;/**Acloseapproximationoftherequiredformat.UnfortunatelyonlyGMT.*/SimpleDateFormatformat=newSimpleDateFormat(EEE,ddMMMyyyyHH:mm:ss'GMT');StringdateString=format.format(newDate());Headers+=Date:+dateString+CRLF;Body=text;}/**Twofunctionstoaccessthesenderandrecipient.*/publicStringgetFrom(){returnFrom;}publicStringgetTo(){returnTo;}/**检查信息的有效性,发送者和接受者的地址*containsonlyone@-sign.*/publicbooleanisValid(){intfromat=From.indexOf('@');inttoat=To.indexOf('@');if(fromat1||(From.length()-f
本文标题:邮件客户机分析
链接地址:https://www.777doc.com/doc-1536378 .html