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

  • 格式:doc
  • 大小:322.00 KB
  • 文档页数:13

邮件发送和接收一、课程设计目的和要求 (2)1,要求: (2)2.课程设计主要内容 (2)二、设计思路 (3)三、分工 (3)四、具体程序和主要代码 (3)五、调试与最终运行结果 (9)六、个人总结 (12)一、课程设计目的和要求本课程设计通过实现一个简单的邮件收发程序,从而使学生能够掌握利用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中。

三、分工●唐琪玲负责邮件发送;●朱涛负责邮件接收;四、具体程序和主要代码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 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 = "\r\n"; // 回车换行字符popreceive p = new popreceive();BufferedReader 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(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;sockout = 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服务程序的回应消息。

String replyLine = sockin.readLine();System.out.println("S:" + replyLine);// 如果输入了RETR命令并且返回了成功的回应码,持续从套接字读取输出,// 直到遇到<CRLF>.<CRLF>。

这时从套接字读出的输出就是邮件的内容。

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);//写程序,将邮件中的内容写入到.txt中。

if (replyLine.startsWith("From:") ||(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) == '.')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中邮箱:net_user01@这个是执行的全部过程,包括从与服务器的连接,和登录的输入用户名和密码,和服务器返回来的内容This_is_about_Information_System这是写文件,re_info.txt。