邮件发送接收课程设计报告_第1页
邮件发送接收课程设计报告_第2页
邮件发送接收课程设计报告_第3页
邮件发送接收课程设计报告_第4页
邮件发送接收课程设计报告_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、邮件发送和接收一、课程设计目的和要求21,要求:22课程设计主要内容2二、设计思路3三、分工4四、具体程序和主要代码4五、调试与最终运行结果10六、个人总结11一、课程设计目的和要求本课程设计通过实现一个简单的邮件收发程序,从而使学生能够掌握利用Socket编程实现网络应用程序的基本方法。1,要求:1 每组由同班2-4名同学组成,可以分组完成邮件发送和邮件接收两部分的内容,每人负责完成其中的一个部分或其中的若干项功能函数;2 每人都要提交课程设计报告,内容包括:l 整体设计方案及主程序流程和本人所属部分的主要内容;l 本人所完成功能函数的核心代码分析、子程序流程和主要代码;l 程序测试结果,包

2、括测试采用的数据和结果。3 进行程序演示和验收2课程设计主要内容编写程序,实现邮件发送和邮件接收。(1) 邮件发送程序以命令行方式运行:smtpsend,其中smtpsend为程序名。在文件user.txt中,每行记录一个接收邮件的用户的Email地址以及用户的类型代码(用户类型为整数,Email地址和用户类型之间用空格分隔);在文件info.txt中记录用户类型代码及相应的邮件正文内容(类型代码和正文之间用空格分隔)。程序运行时首先提示输入发送方的SMTP服务器地址,以及用户名和口令。与服务器建立连接成功后,依次读取文件user.txt中接收方的Email地址,然后根据用户类型从文件中读取相

3、应的正文内容,以电子邮件形式发送给用户。(2) 邮件接收程序以命令行方式运行:popreceive,其中popreceive为程序名。程序运行时首先提示输入接收方的POP服务器地址,以及用户名和口令。然后程序访问邮箱,从中读取新邮件的内容,并将发件人地址和邮件正文记录在文件rec_info.txt中。二、设计思路 邮件接收端思路:1,创建一个连接到POP3服务程序的套接字,使用户可以连接到邮件的服务器端。同时用户可以自主的选择具体输入是哪个邮件服务器。2,使用java中的socket进行网络编程,建立了连接后,用户可以通过使用pop服务器定义的指令来与服务器进行交互。首先是user:输入邮件的

4、名称,然后是pass:输入登录的密码。成功登录邮箱后,就可以读取自己邮箱的中的邮件了。Stat:显示邮箱中所有的收到的邮件,并同时显示出它的大小。List:是分别显示每封邮件的大小。Retr:显示具体的一封邮件的所有信息。Delete:在pop服务器中删除掉所选的邮件,但是后来我发现,它并没有在自己的邮箱中删除,就是说还是可以在自己的邮箱里看到这封邮件。3,因为要求要将所收到的邮件的内容写入到re_info.txt。所以我编写了读写程序,对socket中服务器发送过来的每一行的内容进行的筛选,将邮件的发件人和邮件的内容写入到了E盘下的re_info.txt中。 三、分工l 唐琪玲负责邮件发送;

5、 l 朱涛负责邮件接收;四、具体程序和主要代码package mail;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.PrintWriter;import .Socket;public class

6、popreceive private static String POPServer = ;/ pop3服务器地址 private static String s=; void setServer(String popserver) POPServer = popserver;/ 设置pop服务器的地址public static void main(String args) throws IOException String omd = null;String LINEFEED = rn; / 回车换行字符popreceive p = new popreceive();BufferedRead

7、er stdin;stdin = new BufferedReader(new InputStreamReader(System.in);/ 创建一个BufferedReader对象来读取用户输入。System.out.println(输入pop3服务器地址);omd = stdin.readLine();p.setServer(omd);/ 上面就是根据输入的不同确定不同的服务器/ 用户代理和服务器建立连接int POP3Port = 110;Socket socket = null;/ 服务器端套接字try / 创建一个连接到POP3服务程序的套接字。socket = new Socket

8、(POPServer, POP3Port);System.out.println(成功建立连接);/ 创建一个BufferedReader对象,以便从套接字读取输出。InputStream is = socket.getInputStream();BufferedReader sockin;sockin = new BufferedReader(new InputStreamReader(is);/ 输入流/ 创建一个PrintWriter对象,以便向套接字写入内容。OutputStream os = socket.getOutputStream();PrintWriter sockout;s

9、ockout = new PrintWriter(os, true);/ truefor auto-flush,自动刷新,输出流/ 显示POP3握手信息。/ 一旦连接,服务器就会向客户端发送信息?System.out.println(S: + sockin.readLine();System.out.println(随后输入用户名和密码及相应的命令 + LINEFEED);while (true) System.out.print(C:);/ 读取用户输入。omd = stdin.readLine();/ 将命令发送到POP3服务程序。sockout.println(omd);/ 读取POP3

10、服务程序的回应消息。String replyLine = sockin.readLine();System.out.println(S: + replyLine);/ 如果输入了RETR命令并且返回了成功的回应码,持续从套接字读取输出,/ 直到遇到.。这时从套接字读出的输出就是邮件的内容。if (omd.toLowerCase().startsWith(list)& replyLine.charAt(0) = +) do replyLine = sockin.readLine();System.out.println(S: + replyLine);if (replyLine != null

11、& replyLine.length() 0) if (replyLine.charAt(0) = .) break; while (true);if (omd.toLowerCase().startsWith(retr)& replyLine.charAt(0) = +) / toLowerCase(),返回一个字符串,把字符串中的字符转换成小写字母do replyLine = sockin.readLine();System.out.println(S: + replyLine);/写程序,将邮件中的内容写入到.txt中。if (replyLine.startsWith(Fr

12、om:) |(replyLine.contains(_)&replyLine.contains(is) s=replyLine;System.out.println(写入成功);FileWriter fr=new FileWriter(E:rec_info.txt,true); BufferedWriter bf=new BufferedWriter(fr); bf.newLine(); bf.write(s); bf.flush(); fr.close(); if (replyLine != null & replyLine.length() 0)if (replyLine.charAt(0

13、) = .)break; while (true);/ 如果用户输入了QUIT命令,退出邮件传输过程。if (omd.toLowerCase().startsWith(quit) System.out.println(退出系统);break; catch (IOException e) System.out.println(e.toString(); finally try if (socket != null)socket.close(); catch (IOException e) 五、调试与最终运行结果分别接收两个邮箱的收件内容,以及它们的发送者。并将其写入到rec_info.txt中邮

14、箱:net_这个是执行的全部过程,包括从与服务器的连接,和登录的输入用户名和密码,和服务器返回来的内容This_is_about_Information_System这是写文件,re_info.txt。将邮箱:net_收到的邮件的内容写到这个txt中。这个是运行后的结果。邮箱:net_上面的截图是打开第一封邮件执行的指令是retr 1上面的截图是打开第二封邮件执行的指令是retr 2,此截图和上面的截图是同一个窗口,为了显示方便才分成了2个截图。这是写程序。re_info.txt。将邮箱:net_user02163.

15、com收到的邮件的内容写到这个txt中。六、个人总结 这次的课程设计,我和在假期中选择了邮件收发,一方面因为我们对这个问题比较感兴趣,还有就是在这个课题上老师给的参考资料也多,所以我们就做了这个邮件收发这个题目。在上学期里我们刚好学了java这个课程,了解了socket的基本用法,理解邮件收发这个问题上并没又出现很多的困难。 我做的是邮件的接收这方面的,老师给了一个参考的代码,当我把代码放到eclipse中执行时,发现了很多的问题,包括word中的代码转到eclipse中出现的问题,还有一个很重要的问题就是,在与服务器连接上了以后,执行retr指令的时候,pop服务器并没有发送邮件中的内容,就是说看不到邮件中的内容,后来就一直都卡在这里,有好多天找不到原因,后来才发现是代码中缺少了list指令,输入retr后,执行的是list指令,原因在于list指令要先于retr编写,后来又加上了retr中的代码,最终成功了,可以看到接收邮件的内容。 在课程设计中第二个困难点在如何将邮

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论