课程实验报告
contentPane.add(textArea);
setVisible(true);
}
4)完成寄信操作的函数SendAction
使用了《计算机网络实验SOCKET编程指导手册》中的代码,收件人、内容、被当作参数传如,并赋值SendAction中的变量to、mailConstent
而发件人地址、smtp服务器地址、用户名、密码从类的数据结构里面读取。
publicSendFrame(finalStringsn_username,finalStringsn_passwd,finalStringsn_s_smtp,finalStringusernamername;
ppasswd=sn_passwd;
psn_s_smtp=sn_s_smtp;
未完成
10
支持邮件的回复和转发
写信(将相应内容当作参数传给对应函数)
高级内容
1
支持MIME格式邮件的撰写和发送
未完成
2
支持附件
3
支持邮件的抄写和密送
4
支持多邮件服务器,并可在发送和接收时选择邮件服务器
根据上述表格对相应的模块开始编写代码。
本次的实验使用Java编写,环境为EclipseSDK。
1.4.2
packageMailClient1;
import
import;
import
import
import
importMailClient1.MailClient;
import
import
import
import
import
import
import
import
import;
import;
import
importjava.io.*;
lblSubject.setBounds(11,65,72,18);
contentPane.add(lblSubject);
JLabellblConstent=newJLabel("Constent:");
lblConstent.setBounds(11,108,72,18);
contentPane.add(lblConstent);
contentPane.setBorder(newEmptyBorder(5,5,5,5));
setContentPane(contentPane);
contentPane.setLayout(null);
JButtonbtnNewButton=newJButton("Send");
btnNewButton.addActionListener(newActionListener(){
?支持邮件帐号的配置与存储。
?具备完成所需功能的基本图形用户界面(GUI),并具友好性。
第二级:
?支持将邮件服务器上的邮件完全下载到本地并显示。
?支持邮件下载时选择帐号管理器中的邮件服务器。
?支持接收进度指示和接收完成指示。
?具备完成所需功能的基本图形用户界面(GUI),并具友好性。
第三级:
?支持邮件下载仅下载邮件头,并能根据需要实时下载邮件全部内容。
e1.printStackTrace();
}
}
});
btnNewButton.setBounds(88,294,72,24);
contentPane.add(btnNewButton);
txt_to=newJTextField();
txt_to.setBounds(88,25,334,24);
contentPane.add(txt_to);
txt_subject.setColumns(10);
JLabellblYour=newJLabel("To:");
lblYour.setBounds(11,28,72,18);
contentPane.add(lblYour);
JLabellblSubject=newJLabel("Subject:");
2)主界面:
单击菜单,选择选项卡,会弹出相应的对话框。
3)写信:
填写收件人、题目、内容后可发送。
4)收信:
得到邮件的部分信息,单击Show,会弹出选中的邮件的完全显示,DownloadAll会将邮件全部下载到本地。
5)显示邮件
单击Download&Save会将邮件保存至本地
单击Download&Delete会将邮件保存到本地并从服务器上删除
JButtonbtnQuit=newJButton("Quit");
btnQuit.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
}
});
btnQuit.setBounds(350,293,72,25);
publicintSendAction(Stringto1,Stringconstent1,Stringsubject1)throwsException
{
StringmailContent="";//邮件报文
Stringresponse="";//来自服务器的应答
StringmailServer="";//邮件服务器
contentPane.add(btnQuit);
textArea=newJTextArea();
textArea.setBounds(88,106,334,175);
textArea.setText("Theexistenceonlyexistsinpeople'sperception,\nwhich,bynature,isofvanity.");
.*;
importsun.misc.*;
import
2)定义SendFrame类的内容
首先定义类包含的数据结构,名称和用途如表中所示:
privateJTextFieldtxt_to;
文本框的句柄,用于填写收件人地址
privateJTextFieldtxt_subject;
?支持服务器上邮件下载完成后对邮件是否删除的操作。
?具备完成所需功能的基本图形用户界面(GUI),并具友好性。
第四级:
?支持普通文本邮件的发送。
?可选择发送用帐号并可编辑发送用帐号。
?支持发送进度指示和发送完成指示。
?具备完成所需功能的基本图形用户界面(GUI),并具友好性。
第五级:
?支持HTML、RTF格式邮件的撰写和发送。
privateStringpusername1;
字符串,保存用户名
publicclassSendFrameextendsJInternalFrame{
/**
*
*/
privatestaticfinallongserialVersionUID=1L;
privateJTextFieldtxt_to;
privateJTextFieldtxt_subject;
课程实验报告
课程名称:
专业班级:计算机科学与技术1003班
学号:
姓名:鲁辰
指导教师:
报告日期:
计算机科学与技术学院
1
1.1
?了解应用层和运输层的作用及相关协议的工作原理和机制。
?掌握SOCKET编程的基本方法。
1.2
?必须基于Socket编程,不能直接借用任何现成的组件。
?提交实验设计报告和源代码;实验设计报告必须包括程序流程,源代码必须加详细注释。
单击Reply会把寄件人地址、标题作为参数传给Reply类,并弹出SendMail对话框。
单击Reply会把内容、标题作为参数传给Forward类,并弹出SendMail对话框。
1.4.3
1)声明需要使用的库文件
由于Eclipse很智能,不需要手动添加,当调用了某个函数时,如果没有添加相应的库文件,Eclipse会报错,提供修改方案,在前面添加相应的库文件。
txt_to.setColumns(10);
txt_to.setText();
txt_subject=newJTextField();
txt_subject.setText("Test11");
txt_subject.setBounds(88,62,334,24);
contentPane.add(txt_subject);
privateJTextAreatextArea;
privateStringpusernameadd;
privateStringppasswd;
privateStringpsn_s_smtp;
privateStringpusername1;
3)定义SendFrame类的构造函数SendFrame
在这个函数中,主要将界面架构起来,邮件的发送并不是在这个函数中完成的。当Send按钮被单击后,消息被函数btnNewButton.addActionListener接收到,此时通过调用SendAction函数完成邮件的发送。
?支持邮件发送时添加附件。
?支持抄写和密送功能。
?支持邮件的回复/转发功能。
?具备完成所需功能的基本图形用户界面(GUI),并具友好性。
说明:额外功能的实现,将视具体情况予以一定加分。
1.4
1.4.1
对应检查表确定需要编写代码的模块
序号
检查内容
基本内容
1
具备GUI界面
界面:包括登录界面、收件夹、写信等
pusername1=usernamer1;