📄 mail.java~243~
字号:
package postmail;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
import sun.misc.*;
import com.borland.jbcl.layout.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2006</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class Mail extends JFrame {
JPanel contentPane;
String mailContent = ""; //邮件报文
String response = ""; //来自服务器的应答
String mailServer = ""; //邮件服务器
String from = ""; //发件人地址
String to = ""; //收件人地址
String User; //登陆帐户
String Password; //登陆密码
String hostName; //本地主机名
Socket s; //套接字
BufferedReader inFromServer; //输入流
DataOutputStream outToServer; //输出流
XYLayout xYLayout1 = new XYLayout();
Panel panel1 = new Panel();
JButton jButton1 = new JButton();
XYLayout xYLayout2 = new XYLayout();
JButton jButton2 = new JButton();
Panel panel2 = new Panel();
XYLayout xYLayout3 = new XYLayout();
JLabel jLabel1 = new JLabel();
JTextField jTextField1 = new JTextField();
JLabel jLabel2 = new JLabel();
JLabel jLabel3 = new JLabel();
JTextField jTextField2 = new JTextField();
JTextField jTextField3 = new JTextField();
JButton jButton3 = new JButton();
JLabel jLabel4 = new JLabel();
JLabel jLabel5 = new JLabel();
JLabel jLabel6 = new JLabel();
JTextField jTextField4 = new JTextField();
JTextField jTextField5 = new JTextField();
JTextField jTextField6 = new JTextField();
JLabel jLabel7 = new JLabel();
JTextArea jTextArea1 = new JTextArea();
JLabel jLabel8 = new JLabel();
JButton jButton4 = new JButton();
JButton jButton5 = new JButton();
ScrollPane scrollPane1 = new ScrollPane();
JTextArea jTextArea2 = new JTextArea();
JTextField jTextField7 = new JTextField();
JButton jButton6 = new JButton();//登陆密码
//Construct the frame
public Mail() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
pack();
show();
}
catch (Exception e) {
e.printStackTrace();
}
}
//Component initialization
private void jbInit() throws Exception {
contentPane = (JPanel)this.getContentPane();
this.setTitle("Post Mail");
this.setLocation(250, 100);
contentPane.setLayout(xYLayout1);
jButton1.setFont(new java.awt.Font("Dialog", 0, 13));
jButton1.setText("发邮件");
panel1.setLayout(xYLayout2);
jButton2.setFont(new java.awt.Font("Dialog", 0, 13));
jButton2.setText("收邮件");
panel2.setLayout(xYLayout3);
jLabel1.setFont(new java.awt.Font("Dialog", 0, 16));
jLabel1.setText("邮件服务器:");
jTextField1.setFont(new java.awt.Font("Dialog", 0, 13));
jTextField1.setText("SMTP.163.com");
jLabel2.setFont(new java.awt.Font("Dialog", 0, 16));
jLabel2.setText("用户名:");
jLabel3.setFont(new java.awt.Font("Dialog", 0, 16));
jLabel3.setText("密码:");
jButton3.setFont(new java.awt.Font("Dialog", 0, 13));
jButton3.setText("连接");
jButton3.addActionListener(new Mail_jButton3_actionAdapter(this));
jTextField2.setFont(new java.awt.Font("Dialog", 0, 13));
jTextField2.setText("");
jTextField3.setFont(new java.awt.Font("Dialog", 0, 13));
jTextField3.setText("");
jLabel4.setFont(new java.awt.Font("Dialog", 0, 16));
jLabel4.setText("发信人:");
jLabel5.setFont(new java.awt.Font("Dialog", 0, 16));
jLabel5.setText("收信人:");
jLabel6.setFont(new java.awt.Font("Dialog", 0, 16));
jLabel6.setText("主题:");
jTextField4.setFont(new java.awt.Font("Dialog", 0, 13));
jTextField4.setText("");
jTextField5.setFont(new java.awt.Font("Dialog", 0, 13));
jTextField5.setText("");
jTextField6.setFont(new java.awt.Font("Dialog", 0, 13));
jTextField6.setText("");
jLabel7.setFont(new java.awt.Font("Dialog", 0, 16));
jLabel7.setText("正文:");
jTextArea1.setText("");
jLabel8.setFont(new java.awt.Font("Dialog", 0, 16));
jLabel8.setText("状态信息:");
jButton4.setFont(new java.awt.Font("Dialog", 0, 13));
jButton4.setText("发送");
jButton4.addActionListener(new Mail_jButton4_actionAdapter(this));
jButton5.setFont(new java.awt.Font("Dialog", 0, 13));
jButton5.setText("退出");
jButton5.addActionListener(new Mail_jButton5_actionAdapter(this));
jButton6.setFont(new java.awt.Font("Dialog", 0, 13));
jButton6.setText("附件");
jTextField7.setFont(new java.awt.Font("Dialog", 0, 13));
jTextField7.setText("");
contentPane.add(panel1, new XYConstraints(1, 2, 81, 499));
panel1.add(jButton2, new XYConstraints(7, 70, -1, -1));
panel1.add(jButton1, new XYConstraints(5, 5, 74, -1));
panel1.add(jButton5, new XYConstraints(6, 135, 73, -1));
contentPane.add(panel2, new XYConstraints(88, 1, 425, 531));
panel2.add(jLabel1, new XYConstraints(9, 8, 97, 25));
panel2.add(jTextField1, new XYConstraints(110, 8, 147, 23));
panel2.add(jTextField2, new XYConstraints(72, 46, 97, 23));
panel2.add(jLabel3, new XYConstraints(178, 46, 52, 25));
panel2.add(jTextField3, new XYConstraints(228, 46, 95, 23));
panel2.add(jLabel2, new XYConstraints(6, 47, 67, 22));
panel2.add(jButton3, new XYConstraints(355, 46, -1, 27));
panel2.add(jLabel5, new XYConstraints(219, 90, -1, -1));
panel2.add(jTextField4, new XYConstraints(74, 88, 130, -1));
panel2.add(jLabel4, new XYConstraints(7, 88, -1, -1));
panel2.add(jTextField6, new XYConstraints(74, 127, 281, 27));
panel2.add(jLabel6, new XYConstraints(7, 129, -1, -1));
panel2.add(jTextArea1, new XYConstraints(75, 171, 345, 64));
panel2.add(jLabel7, new XYConstraints(8, 167, -1, -1));
panel2.add(jTextField5, new XYConstraints(284, 87, 133, -1));
panel2.add(scrollPane1, new XYConstraints(72, 341, 347, 167));
panel2.add(jButton4, new XYConstraints(353, 296, 65, 26));
panel2.add(jLabel8, new XYConstraints(6, 301, -1, -1));
panel2.add(jButton6, new XYConstraints(353, 254, 64, 27));
panel2.add(jTextField7, new XYConstraints(75, 255, 256, -1));
scrollPane1.add(jTextArea2, null);
}
//Overridden so we can exit when window is closed
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
System.exit(0);
}
}
void jButton3_actionPerformed(ActionEvent e) {
try {
hostName=InetAddress.getLocalHost().getHostName();
mailServer = jTextField1.getText();
User = jTextField2.getText();
Password = jTextField3.getText();
//建立一个到邮件服务器的连接,端口号25
s = new Socket(mailServer, 25);
//将SOCKET输入流连接到带缓冲功能的输入流BufferedReader,以便一次读一行来自
//服务器的应答报文
inFromServer =
new BufferedReader(new InputStreamReader(s.getInputStream()));
//将SOCKET输出流连接到带缓冲功能的输出流PrintWriter,以便一次输出一行报文到服务器
outToServer = new DataOutputStream(s.getOutputStream());
//读取来自服务器的第一行应答,并显示在屏幕上
response = inFromServer.readLine();
jTextArea2.append("MailServer:" + response + "\n");
//定义编码方式
BASE64Encoder encoder = new BASE64Encoder();
String encodedUser = encoder.encode(User.getBytes());
String encodedPwd = encoder.encode(Password.getBytes());
jTextArea2.append("Client:" + "HELO " + hostName + "\n");
//和服务器会话,发送HELO hostname命令
outToServer.println("HELO " + hostName);
//读入来自服务器的5行应答,并显示在屏幕上
//for(int i = 0; i < 5; i++){
response = inFromServer.readLine();
jTextArea2.append("MailServer:" + response + "\n");
//}
jTextArea2.append("Client:" + "AUTH LOGIN \n");
//和服务器会话,发送AUTH LOGIN命令,请求身份验证
outToServer.println("AUTH LOGIN ");
//读入来自服务器的应答,并显示在屏幕上
response = inFromServer.readLine();
jTextArea2.append("MailServer:" + response + "\n");
jTextArea2.append("Client:" + encodedUser + "\n");
//向服务器发送自己的帐号
outToServer.println(encodedUser);
//读入来自服务器的应答,并显示在屏幕上
response = inFromServer.readLine();
jTextArea2.append("MailServer:" + response + "\n");
jTextArea2.append("Client:" + encodedPwd + "\n");
//向服务器发送自己的密码
outToServer.println(encodedPwd);
//读入来自服务器的应答,并显示在屏幕上
response = inFromServer.readLine();
jTextArea2.append("MailServer:" + response + "\n");
}
catch (Exception ex) {}
}
void jButton4_actionPerformed(ActionEvent e) {
try {
from=jTextField4.getText();
to=jTextField5.getText();
mailContent =
"From: " + from + "\n" +
"To: " + to + "\n" +
"Subject: " + jTextField6.getText() + "\n" +
jTextArea1.getText();
jTextArea2.append("Client:" + "MAIL FROM: " + from + "\n");
//向服务器发送MAIL FROM: 发件人地址
outToServer.println("MAIL FROM: <" + from + ">");
//读入来自服务器的应答,并显示在屏幕上
response = inFromServer.readLine();
jTextArea2.append("MailServer:" + response + "\n");
jTextArea2.append("Client:" + "RCPT TO: " + to + "\n");
//向服务器发送RCPT TO: 收件人地址
outToServer.println("RCPT TO: <" + to + ">");
//读入来自服务器的应答,并显示在屏幕上
response = inFromServer.readLine();
jTextArea2.append("MailServer:" + response + "\n");
//请求发送邮件正文
outToServer.println("DATA");
//读入来自服务器的应答,并显示在屏幕上
response = inFromServer.readLine();
jTextArea2.append("MailServer:" + response + "\n");
//开始发送邮件正文
outToServer.println(mailContent);
//发送邮件结束标志
outToServer.println(".");
//读入来自服务器的应答,并显示在屏幕上
response = inFromServer.readLine();
jTextArea2.append("MailServer:" + response + "\n");
}
catch(Exception ex) {}
}
void jButton5_actionPerformed(ActionEvent e) {
try{
s.close();
}
catch(Exception ex) {}
}
}
class Mail_jButton3_actionAdapter implements java.awt.event.ActionListener {
Mail adaptee;
Mail_jButton3_actionAdapter(Mail adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton3_actionPerformed(e);
}
}
class Mail_jButton4_actionAdapter implements java.awt.event.ActionListener {
Mail adaptee;
Mail_jButton4_actionAdapter(Mail adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton4_actionPerformed(e);
}
}
class Mail_jButton5_actionAdapter implements java.awt.event.ActionListener {
Mail adaptee;
Mail_jButton5_actionAdapter(Mail adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton5_actionPerformed(e);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -