📄 jmail.java
字号:
//删除邮件
public void deleteEmail(){
try {
int folderIdx = folderViews.getSelectedIndex();
java.awt.List letterList = (java.awt.List) folderViews.getItem(folderIdx);
int letterIdx = letterList.getSelectedIndex();
String folder = folderViews.getSelectedItem();
Vector letters = (Vector) folders.get(folder);
letters.removeElementAt(letterIdx);
letterList.remove(letterIdx);
enableButtons();
}
catch (Exception e) {
new WinFrame("Deleting mail",e);
}
}
//初始化邮件,读取文件saveState中信息
private void init(File saveState){
this.saveState = saveState;
enableButtonsListener = new ItemListener(){
public void itemStateChanged(ItemEvent e){
enableButtons();
}
};
folderViews = new ChoiceCardPanel("Folders");
//System.out.println( "folderViews = " + folderViews );
folderViews.addItemListener( enableButtonsListener );
folders = new Hashtable();
boolean restored = false;
if ( saveState.exists() )
try {
FileInputStream fis = new FileInputStream( saveState ); //在此处文件名saveState为"Email"
ObjectInputStream ois = new ObjectInputStream(fis);
smtp = ( SMTPwConfig ) ois.readObject();
pop3 = ( POP3wConfig ) ois.readObject();
filterConfig = ( FilterConfig ) ois.readObject();
dateConfig = ( DateConfig ) ois.readObject();
Hashtable savedFolders = ( Hashtable ) ois.readObject();
ois.close();
addFolders( savedFolders );
restored = true;
}
catch (Exception e) {
new WinFrame("Restoring JMail state",e);
}
if ( !restored ) { //文件不存在
addFolder(Inbox);
addFolder(Outbox);
addFolder(SentItems);
smtp = new SMTPwConfig();
pop3 = new POP3wConfig();
filterConfig = new FilterConfig();
dateConfig = new DateConfig();
}
smtpPop3Config = new SMTPPOP3Config(smtp,pop3);
mailbox = new Mailbox() {
public void post(Email email){
addToFolder(Outbox,email);
}
public String getFrom() {
return smtp.getSenderEmailAddress(JMail.this);
}
};
Panel p = new Panel();
p.add( newMsgButton );
newMsgButton.addActionListener
(
new ActionListener() {
public void actionPerformed(ActionEvent e){
new ComposeEmail ("New Message",mailbox ).setVisible(true);
}
}
);
p.add(replyToButton);
p.add(replyToAllButton);
p.add(forwardButton);
p.add(sendXcvButton);
p.add(deleteButton);
add("North",p);
//Checkbox cb = new Checkbox("one");
//p.add(cb);
add( "Center",new InsetPanel( 10,10,10,10,folderViews ) ); //邮件的主要信息面板
preview = new PreviewEmailPanel(10,12); //预览邮件,设定为10行12列
add( "South",new InsetPanel( 10,10,10,10,preview ) );
pack();
//接收&发送邮件事件监听
sendXcvButton.addActionListener
(
new ActionListener(){
public void actionPerformed(ActionEvent e){
sendXcv();
}
}
);
//删除邮件事件监听
deleteButton.addActionListener
(
new ActionListener(){
public void actionPerformed(ActionEvent e){
deleteEmail();
}
}
);
//回复邮件事件监听
replyToButton.addActionListener
(
new ActionListener(){
public void actionPerformed(ActionEvent e){
Email em = getSelectedEmail().replyTo(JMail.this);
new ComposeEmail( em.getSubject(), mailbox,em ).setVisible(true);
}
}
);
//回复所有监听
replyToAllButton.addActionListener
(
new ActionListener(){
public void actionPerformed(ActionEvent e){
Email em = getSelectedEmail().replyToAll(JMail.this);
new ComposeEmail( em.getSubject(), mailbox,em ).setVisible(true);
}
}
);
//转发邮件事件监听
forwardButton.addActionListener
(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
Email em = getSelectedEmail().forward();
new ComposeEmail(em.getSubject(), mailbox,em ).setVisible(true);
}
}
);
enableButtons();
MenuBar mb = new MenuBar();
//Mail菜单:包含Options菜单项和Filter菜单项
Menu m = new Menu("Mail");
MenuItem mi = new MenuItem("Options");
mi.addActionListener
(
new ActionListener() {
public void actionPerformed(ActionEvent e){
//设置SMTP和POP服务器属性
smtpPop3Config.configure(JMail.this,"JMail");
}
}
);
m.add(mi);
//增加过滤按钮
mi = new MenuItem("Filter");
//过滤事件需修改
mi.addActionListener
(
new ActionListener() {
public void actionPerformed(ActionEvent e){
//设置过滤事件
filterConfig.configure(JMail.this,"JMail");
}
}
);
m.add(mi);
mb.add(m);
//增加Tools菜单
m = new Menu("Tools");
mi = new MenuItem("Inquire about"); //查询按钮,可根据时间段查询Email
mi.addActionListener
(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
dateConfig.configure(JMail.this,"JMail");
}
}
);
m.add(mi);
mi = new MenuItem("Address book");
m.add(mi);
mb.add(m);
//Help菜单:包含Feedback菜单项和About菜单项
m = new Menu("Help");
mi = new MenuItem("Feedback");
mi.addActionListener
(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
Email em = new Email(
"To: wy82@21cn.com\n" +
"Subject: Problem!\n\n" +
"Please send me your questions, comments, suggestions!");
new ComposeEmail( em.getSubject(), mailbox,em ).setVisible(true);
}
}
);
m.add(mi);
mi = new MenuItem("About");
mi.addActionListener
(
new ActionListener(){
public void actionPerformed(ActionEvent e){
final WinDialog wd = new WinDialog(JMail.this,"About",true);
Panel ap = new Panel();
ap.setLayout( new GridBagLayout() );
GridBagConstraints c = new GridBagConstraints();
c.gridwidth = GridBagConstraints.REMAINDER;
ap.add( new Label("Mail Client"),c );
ap.add( new Label("Edit by WangPingshen "),c );
ap.add( new Label("科大 R & D"),c );
ap.add( new Label("2005年6月"),c );
wd.add( "Center",new InsetPanel(15,15,15,15,ap) );
Button ok = new Button("Ok");
ap = new Panel();
ap.add(ok);
wd.add("South",ap);
ok.addActionListener
(
new ActionListener(){
public void actionPerformed(ActionEvent e){
wd.dispose();
}
}
);
wd.pack();
wd.setVisible(true);
}
}
);
m.add(mi);
mb.add(m);
setMenuBar(mb);
}
public JMail(File saveState){
super( saveState.getName() );
init( saveState );
}
public JMail(String pathname){
this( new File( pathname ) );
}
public void save(){
//保存信息,文件名:savaState
try {
FileOutputStream fos = new FileOutputStream( saveState );
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(smtp); //写入smtp服务器初始化信息
oos.writeObject(pop3); //写入pop服务器初始化信息
//过滤设置写入文件中
oos.writeObject( filterConfig ); //写入过滤信息
oos.writeObject( dateConfig ); //写入时间段信息
oos.writeObject(folders); //写入邮件信息(包括发件夹,收件夹。已发邮件夹).
//System.out.println(" smtp ="+ smtp );
//System.out.println(" pop3 ="+ pop3 );
//System.out.println(" filterConfig = "+ filterConfig );
//System.out.println(" folders = "+ folders );
//System.out.println( " add_filter = " + filterConfig.Adress_Filter );
//System.out.println( " sub_filter = " + filterConfig.Subject_Filter );
oos.close();
}
catch (Exception e) {
new WinFrame("JMail saving state",e);
}
}
public void dispose(){
save();
super.dispose();
}
//根据过滤设置过滤邮件
public boolean filters( String Str, String strFilter ){ //过滤邮件
Str = Str.toLowerCase();
strFilter = strFilter.toLowerCase();
int First = 0;
if( (First = Str.indexOf(strFilter) ) != -1 ){ //需要过滤
return true;
}
else //不需过滤
return false;
}
public static void main(String[] args){
try {
new JMail( args[0] ).appMainWindow().setVisible(true);
}
catch (Exception e) {
new JMail("EMail").appMainWindow().setVisible(true); //初始化邮件,信息存贮在Email文件中
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -