邮件发送接收课程设计报告.docx

上传人:b****5 文档编号:7719281 上传时间:2023-01-26 格式:DOCX 页数:9 大小:96.01KB
下载 相关 举报
邮件发送接收课程设计报告.docx_第1页
第1页 / 共9页
邮件发送接收课程设计报告.docx_第2页
第2页 / 共9页
邮件发送接收课程设计报告.docx_第3页
第3页 / 共9页
邮件发送接收课程设计报告.docx_第4页
第4页 / 共9页
邮件发送接收课程设计报告.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

邮件发送接收课程设计报告.docx

《邮件发送接收课程设计报告.docx》由会员分享,可在线阅读,更多相关《邮件发送接收课程设计报告.docx(9页珍藏版)》请在冰豆网上搜索。

邮件发送接收课程设计报告.docx

邮件发送接收课程设计报告

邮件发送和接收

一、课程设计目的和要求2

1,要求:

2

2.课程设计主要内容2

二、设计思路3

三、分工4

四、具体程序和主要代码4

五、调试与最终运行结果10

六、个人总结11

 

一、课程设计目的和要求

本课程设计通过实现一个简单的邮件收发程序,从而使学生能够掌握利用Socket编程实现网络应用程序的基本方法。

1,要求:

[1]每组由同班2-4名同学组成,可以分组完成邮件发送和邮件接收两部分的内容,每人负责完成其中的一个部分或其中的若干项功能函数;

[2]每人都要提交课程设计报告,内容包括:

●整体设计方案及主程序流程和本人所属部分的主要内容;

●本人所完成功能函数的核心代码分析、子程序流程和主要代码;

●程序测试结果,包括测试采用的数据和结果。

[3]进行程序演示和验收

2.课程设计主要内容

编写程序,实现邮件发送和邮件接收。

(1)邮件发送

程序以命令行方式运行:

smtpsend,其中smtpsend为程序名。

在文件user.txt中,每行记录一个接收邮件的用户的Email地址以及用户的类型代码(用户类型为整数,Email地址和用户类型之间用空格分隔);在文件info.txt中记录用户类型代码及相应的邮件正文内容(类型代码和正文之间用空格分隔)。

程序运行时首先提示输入发送方的SMTP服务器地址,以及用户名和口令。

与服务器建立连接成功后,依次读取文件user.txt中接收方的Email地址,然后根据用户类型从文件中读取相应的正文内容,以电子邮件形式发送给用户。

(2)邮件接收

程序以命令行方式运行:

popreceive,其中popreceive为程序名。

程序运行时首先提示输入接收方的POP服务器地址,以及用户名和口令。

然后程序访问邮箱,从中读取新邮件的内容,并将发件人地址和邮件正文记录在文件rec_info.txt中。

二、设计思路

邮件接收端思路:

1,创建一个连接到POP3服务程序的套接字,使用户可以连接到邮件的服务器端。

同时用户可以自主的选择具体输入是哪个邮件服务器。

2,使用java中的socket进行网络编程,建立了连接后,用户可以通过使用pop服务器定义的指令来与服务器进行交互。

首先是user:

输入邮件的名称,然后是pass:

输入登录的密码。

成功登录邮箱后,就可以读取自己邮箱的中的邮件了。

Stat:

显示邮箱中所有的收到的邮件,并同时显示出它的大小。

List:

是分别显示每封邮件的大小。

Retr:

显示具体的一封邮件的所有信息。

Delete:

在pop服务器中删除掉所选的邮件,但是后来我发现,它并没有在自己的邮箱中删除,就是说还是可以在自己的邮箱里看到这封邮件。

3,因为要求要将所收到的邮件的内容写入到re_info.txt。

所以我编写了读写程序,对socket中服务器发送过来的每一行的内容进行的筛选,将邮件的发件人和邮件的内容写入到了E盘下的re_info.txt中。

三、分工

●唐琪玲负责邮件发送;

●朱涛负责邮件接收;

 

四、具体程序和主要代码

 

packagemail;

importjava.io.BufferedReader;

importjava.io.BufferedWriter;

importjava.io.FileWriter;

importjava.io.IOException;

importjava.io.InputStream;

importjava.io.InputStreamReader;

importjava.io.OutputStream;

importjava.io.PrintWriter;

import.Socket;

publicclasspopreceive{

privatestaticStringPOPServer="";//pop3服务器地址

privatestaticStrings="";

 

voidsetServer(Stringpopserver){

POPServer=popserver;

}//设置pop服务器的地址

publicstaticvoidmain(String[]args)throwsIOException{

Stringomd=null;

StringLINEFEED="\r\n";//回车换行字符

popreceivep=newpopreceive();

BufferedReaderstdin;

stdin=newBufferedReader(newInputStreamReader(System.in));

//创建一个BufferedReader对象来读取用户输入。

System.out.println("输入pop3服务器地址");

omd=stdin.readLine();

p.setServer(omd);

//上面就是根据输入的不同确定不同的服务器

//用户代理和服务器建立连接

intPOP3Port=110;

Socketsocket=null;//服务器端套接字

try{

//创建一个连接到POP3服务程序的套接字。

socket=newSocket(POPServer,POP3Port);

System.out.println("成功建立连接");

//创建一个BufferedReader对象,以便从套接字读取输出。

InputStreamis=socket.getInputStream();

BufferedReadersockin;

sockin=newBufferedReader(newInputStreamReader(is));//输入流

//创建一个PrintWriter对象,以便向套接字写入内容。

OutputStreamos=socket.getOutputStream();

PrintWritersockout;

sockout=newPrintWriter(os,true);//trueforauto-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服务程序的回应消息。

StringreplyLine=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&&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);

//写程序,将邮件中的内容写入到re.info.txt中。

if(replyLine.startsWith("From:

")||(replyLine.contains("_")&&replyLine.contains("is"))){

s=replyLine;

System.out.println("写入成功");

FileWriterfr=newFileWriter("E:

\\rec_info.txt",true);

BufferedWriterbf=newBufferedWriter(fr);

bf.newLine();

bf.write(s);

bf.flush();

fr.close();

 

}

if(replyLine!

=null&&replyLine.length()>0)

if(replyLine.charAt(0)=='.')

break;

}while(true);

//如果用户输入了QUIT命令,退出邮件传输过程。

if(omd.toLowerCase().startsWith("quit")){

System.out.println("退出系统");

break;

}

}

}

}catch(IOExceptione){

System.out.println(e.toString());

}finally{

try{

if(socket!

=null)

socket.close();

}catch(IOExceptione){

}

}

}

}

 

五、调试与最终运行结果

分别接收两个邮箱的收件内容,以及它们的发送者。

并将其写入到rec_info.txt中

邮箱:

net_user01@

这个是执行的全部过程,包括从与服务器的连接,和登录的输入用户名和密码,和服务器返回来的内容This_is_about_Information_System

 

这是写文件,re_info.txt。

将邮箱:

net_user01@收到的邮件的内容写到这个txt中。

这个是运行后的结果。

 

邮箱:

net_user02@

上面的截图是打开第一封邮件执行的指令是retr1

上面的截图是打开第二封邮件执行的指令是retr2,此截图和上面的截图是同一个窗口,为了显示方便才分成了2个截图。

 

这是写程序。

re_info.txt。

将邮箱:

net_user02@收到的邮件的内容写到这个txt中。

六、个人总结

这次的课程设计,我和在假期中选择了邮件收发,一方面因为我们对这个问题比较感兴趣,还有就是在这个课题上老师给的参考资料也多,所以我们就做了这个邮件收发这个题目。

在上学期里我们刚好学了java这个课程,了解了socket的基本用法,理解邮件收发这个问题上并没又出现很多的困难。

我做的是邮件的接收这方面的,老师给了一个参考的代码,当我把代码放到eclipse中执行时,发现了很多的问题,包括word中的代码转到eclipse中出现的问题,还有一个很重要的问题就是,在与服务器连接上了以后,执行retr指令的时候,pop服务器并没有发送邮件中的内容,就是说看不到邮件中的内容,后来就一直都卡在这里,有好多天找不到原因,后来才发现是代码中缺少了list指令,输入retr后,执行的是list指令,原因在于list指令要先于retr编写,后来又加上了retr中的代码,最终成功了,可以看到接收邮件的内容。

在课程设计中第二个困难点在如何将邮件接收到的内容写入re_info.txt中。

由于java功底的薄弱,该开始我并没有理解这个读写程序怎么实现,后来通过网络上的视频教程,我才明白了文件流的相关问题。

最终我遍历了服务器发送过来的每一行的内容,根据筛选条件,成功将其写入了re_info.txt中。

整个过程从查找资料、可行性研究、总体设计、开发到完成优化,我认真完成自己的各项任务,从理论到实践都学到了很多东西,感想和认识也比较深刻。

在这次课程设计中,团队的分工和合作也很重要,虽然我们是两个人,但是我们也进行了详细的分工。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1