1、 helo S: 250 0K AUTH LOGIN 334 dXNIcm5hbWU6 MTMyODEwNjlAYmpOdS5IZHUuY24= 334 UGFzc3dvcmQ6 MTMyNDMl 235 Authentication successful MAIL FROM: 250 Mail OK RCPT TO:519399762 DATA 354 End data with .LF Subject:用SMTP实现EMAIL客户端实验 From: To:测试文本内容:. 250 Mail OK queued as Mp5wygBHKAUiDj9WHvDBAA-.16623S2 QUIT
2、221 Bye分析:从上面客户机与服务器交换报文脚本信息中可以看出,客户机程序从邮件服务器 向邮件服务器发送了一个报文,报文的首部为:Subject:From:13281069 To:,在报文首部之后,紧接着是一个空白行,然后是报文的主体。该客户机发送的命令:HELO (是HELLO的缩写)、MAIL FROM, RCPT TO、DATA以及QUIT完成了客户机与服务器的握 手、指明发送方和接收方的邮件地址、告诉服务器将要传送邮件内容以及结束等。客户机 通过发送一个包含一个句点的行,告诉服务器该报文结束了。(按照ASCII码的表示方法, 每个报文以CRLF.CRLF结束,其中的CR和LF分别表
3、示回车和换行。)服务器对每条指令做 出回答,其中每个回答含有一个回答码和一些英文解释。4. 实验总结通过本实验,我对网络编程有进一步的理解和掌握,并能够理解smtp协议的细节。通 过实验中程序运行输出的SMTP客户机与SMTP服务器之间报文脚本的交换,我可以更清楚的 看到在整个邮件发送的过程中服务器和客户机之间是怎么进行信息交换的,同时我还了解了 邮件的报文格式,对报文的首部和报文的主体部分有了更加深刻的了解。5. SMTP实现EMAIL客户端功能程序代码User.java 文件:package mailClient;publicclass User private String base64
4、Name =;private String base64Pass = / 用于用户登陆publicvoid setNameAndPass(String name, String pass) this.base64Name = name;this.base64Pass = pass;public String getBase64Name() (returnbase64Name;public String getBase64Pass() returnbase64Pass;SendMail.java 文件:import java.awt.BorderLayout;import java.awt.Gr
5、idLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.IOException;import java.io.PrintWriter;import .InetAddress;import .Socket;import java.util.Scanner;import mons.codec.binary.Base64;import javax.swing.3Button;import javax.swing.3Frame;import javax.swing.3L
6、abel;import javax.swing.30ptionPane;import javax.swing.3Panel;import javax.swing.3PasswordField;import javax.swing.3ScrollPane;import javax.swing.JTextArea;import javax.swing.3TextField;import sun.misc.*;publicclass SendMail extends JFrameprivatestaticfinallongseriaLUersionL/ID = lL;privateinttestNu
7、m = 0; 测试18如勺文件经过加密后循环次数private 3TextField from;private 3TextField to;private 3TextField subject;private 3TextField server;private 3TextArea message;private 3TextArea comm;private Scanner in;private PrintWriter out;private 3TextField userName;private 3PasswordField userPass;private String currRepons
8、e = /辅助性显示当前从服务器传回来的指令private User user = new User();public SendMail()(设置framesetSize(600,400);setTitle(My SMTP Client);setDefaultCloseOperation(3Frame.EXIT_ON_CLOSE);this.setLocationRelativeTo(null);/ add to frame3Panel pl = new 3Panel(new GridLayout(3,4);pl.add(new 3Label(from:);from = new 3TextFi
9、eld(20);pl.add(from);userPass:userName = from;userPass = new 3PasswordField(20);String name = userName.getText().toString().trim();String pass = new String(userPass.getPassword();if(name != nullSXpass != nullSS !name.equalsIgnoreCase() & !pass.equalsIgnoreCase()( name = new String(Base64.encodeBase6
10、4(name.getBytes();pass = new String(Base64.encodeBose64(pass.getBytes();user.setNameAndPass(name, pass);pl.add(userPass);to:to = new JTextField(20);pl.add(to);SMTP server:server = new 3TextField(20);pl.add(server);subject = new JTextField(20);pl.add(new JLabel(pl.add(subject);add(pljBorderLayout.A/O
11、RTH);3Panel p2 = new 3Panel(new GridLayout(2jl);message = new 3TextArea();p2.add(new 3ScrollPane(message);comm = new JTextArea();comm.setEditable(false);comm.setText(Waiting.p2.add(new 3ScrollPane(comm);add(p2jBorderLayout.CFA/7FR);3Panel p3 = new 3Panel();3Button sendButton = new 3Button(sendp3.add
12、(sendButton);add(p3jBorderLayout.SOUTH);sendButton.addActionListener(new ActionListener()(SuppressWarnings(deprecation)Overridepublicvoid actionPerformed(ActionEvent e) (sendMail(server.getText().trim(),from.getText().trim(),to.getText().trim(),messa ge.getText(),subject.getText(),userName.getText(),userPass.getText(););setVisible(true);SuDDressWarninRs(restrictionprivatevoid sendMa
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1